/// <summary> /// Parses the data with the types (defined by human) for the BoardGameGeek data /// </summary> /// <param name="data">One line of data to be parsed.</param> /// <param name="names">Names (keys) for each column.</param> /// <returns>A DateLine with the parsed content.</returns> public static DataLine ParseFixed(string[] data, string[] names) { DataLine result = new DataLine(); result.hashDoubles[names[0]] = double.Parse(data[0], System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo); //id result.hashStrings[names[1]] = data[1]; //name //result.hashStrings["str "+names[2]] = "year_published " + data[2]; //year_published result.hashDoubles[names[2]] = double.Parse(data[2]); //year_published result.hashDoubles[names[3]] = double.Parse(data[3], System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo); //min_players //result.hashStrings["str " + names[3]] = "min_players " + data[3]; //min_players result.hashDoubles[names[4]] = double.Parse(data[4], System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo); //max_players //result.hashStrings["str " + names[4]] = "max_players " + data[4]; //max_players //result.hashStrings["str " + names[5]] = "playingtime " + data[5]; //playingtime result.hashDoubles[names[5]] = double.Parse(data[5], System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo); //playingtime result.hashDoubles[names[6]] = double.Parse(data[6], System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo); //min_age result.hashDoubles[names[7]] = double.Parse(data[7], System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo); //users_rated result.hashDoubles[names[8]] = double.Parse(data[8], System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo); //average_rating //result.hashStrings["str " + names[8]] = "average_rating " + data[8]; //average_rating result.hashDoubles[names[9]] = double.Parse(data[9], System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo); //rating_stddev result.hashDoubles[names[10]] = double.Parse(data[10], System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo); //num_owned result.hashDoubles[names[11]] = double.Parse(data[11], System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo); //num_trading result.hashDoubles[names[12]] = double.Parse(data[12], System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo); //num_wanting result.hashDoubles[names[13]] = double.Parse(data[13], System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo); //num_wishing result.hashDoubles[names[14]] = double.Parse(data[14], System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo); //num_comments //result.hashDoubles[names[15]] = ParseDouble(data[15]); //num_players_best //result.hashDoubles[names[16]] = ParseDouble(data[16]); //num_players_rec //result.hashDoubles[names[17]] = ParseDouble(data[17]); //num_players_notrec //result.hashDoubles[names[18]] = Double.Parse(data[18]); //suggested_age result.hashStringArrays[names[19]] = ParseStringArray(data[19], CATEGORY).Select(c => IDtoLabel(c)).ToArray(); //categories result.hashStringArrays[names[20]] = ParseStringArray(data[20], MECHANIC).Select(c => IDtoLabel(c)).ToArray(); //mechanics //result.hashStringArrays[names[21]] = ParseStringArray(data[21]);//, BOARDGAMEFAMILY); //boardgamefamilies //result.hashStringArrays[names[22]] = ParseStringArray(data[22]); //implementation_of //result.hashStringArrays[names[23]] = ParseStringArray(data[23]);//, DESIGNER); //designers //result.hashStringArrays[names[24]] = ParseStringArray(data[24]);//, ARTIST); //artists //result.hashStringArrays[names[25]] = ParseStringArray(data[25]);//, PUBLISHER); //publishers return(result); }
/// <summary> /// Parses the data with the types (defined by human) for the BoardGameGeek data /// </summary> /// <param name="data">One line of data to be parsed.</param> /// <param name="names">Names (keys) for each column.</param> /// <returns>A DateLine with the parsed content.</returns> public static DataLine ParseFixed(string[] data, string[] names) { DataLine result = new DataLine(); result.hashDoubles[names[0]] = double.Parse(data[0], System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo); //id result.hashStrings[names[1]] = data[1]; //name //result.hashStrings["str "+names[2]] = "year_published " + data[2]; //year_published result.hashDoubles[names[2]] = double.Parse(data[2]); //year_published result.hashDoubles[names[3]] = double.Parse(data[3], System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo); //min_players //result.hashStrings["str " + names[3]] = "min_players " + data[3]; //min_players result.hashDoubles[names[4]] = double.Parse(data[4], System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo); //max_players //result.hashStrings["str " + names[4]] = "max_players " + data[4]; //max_players //result.hashStrings["str " + names[5]] = "playingtime " + data[5]; //playingtime result.hashDoubles[names[5]] = double.Parse(data[5], System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo); //playingtime result.hashDoubles[names[6]] = double.Parse(data[6], System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo); //min_age result.hashDoubles[names[7]] = double.Parse(data[7], System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo); //users_rated result.hashDoubles[names[8]] = double.Parse(data[8], System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo); //average_rating //result.hashStrings["str " + names[8]] = "average_rating " + data[8]; //average_rating result.hashDoubles[names[9]] = double.Parse(data[9], System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo); //rating_stddev result.hashDoubles[names[10]] = double.Parse(data[10], System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo); //num_owned result.hashDoubles[names[11]] = double.Parse(data[11], System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo); //num_trading result.hashDoubles[names[12]] = double.Parse(data[12], System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo); //num_wanting result.hashDoubles[names[13]] = double.Parse(data[13], System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo); //num_wishing result.hashDoubles[names[14]] = double.Parse(data[14], System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo); //num_comments //result.hashDoubles[names[15]] = ParseDouble(data[15]); //num_players_best //result.hashDoubles[names[16]] = ParseDouble(data[16]); //num_players_rec //result.hashDoubles[names[17]] = ParseDouble(data[17]); //num_players_notrec //result.hashDoubles[names[18]] = Double.Parse(data[18]); //suggested_age result.hashStringArrays[names[19]] = ParseStringArray(data[19], CATEGORY).Select(c => IDtoLabel(c)).ToArray(); //categories result.hashStringArrays[names[20]] = ParseStringArray(data[20], MECHANIC).Select(c => IDtoLabel(c)).ToArray(); //mechanics //result.hashStringArrays[names[21]] = ParseStringArray(data[21]);//, BOARDGAMEFAMILY); //boardgamefamilies //result.hashStringArrays[names[22]] = ParseStringArray(data[22]); //implementation_of //result.hashStringArrays[names[23]] = ParseStringArray(data[23]);//, DESIGNER); //designers //result.hashStringArrays[names[24]] = ParseStringArray(data[24]);//, ARTIST); //artists //result.hashStringArrays[names[25]] = ParseStringArray(data[25]);//, PUBLISHER); //publishers return result; }
public static List <DataLine> ParseHistorical(string[][] data) { return(data.Skip(1).Select(d => DataLine.ParseHistorical(d, data[0])).ToList()); }
/// <summary> /// Parses all the data with the types (defined by human) for the BoardGameGeek data /// </summary> /// <param name="data">A two-dimensional (jagged) array of strings, containing /// the names of columns (as the first element) and then DataLine content in all /// following.</param> /// <returns>A list of DataLines with matching keys and types.</returns> public static List <DataLine> ParseFixed(string[][] data) { Console.WriteLine("Parsing " + data.Length + " lines"); return(data.Skip(1).Select(d => DataLine.ParseFixed(d, data[0])).ToList()); }
// Makes a DataLine into a Centroid private static Dictionary<string, double> Convert(DataLine data) { Dictionary<string, double> centroid = new Dictionary<string, double>(); foreach (string key in data.hashDoubles.Keys) { centroid[key] = data.hashDoubles[key] ?? 0.0; // Null == 0.0 (might not be good) } return centroid; }
/// <summary> /// Adds the given DataLines as a member of this cluster. /// </summary> /// <param name="a">The DataLine to add.</param> public void AddMember(DataLine a) { this.members.Add(a); }
public KMeanCluster(DataLine answer) : this(Convert(answer)) { }