public static List <Cluster> initiateClusters(int amount, initialCentrioidSelection selectiontype, Dictionary <int, UserForKMeansWine> users) { Random picker = new Random(); List <Cluster> returnlist = new List <Cluster>(); while (amount != 0) { Cluster clusterconstruct = new Cluster(); if (selectiontype == initialCentrioidSelection.RandomUser) { int randomuser = picker.Next(users.Count); clusterconstruct.currentcentroid = users[randomuser]; } returnlist.Add(clusterconstruct); amount--; } return(returnlist); }
public static Tuple <float, List <Cluster> > kmeaniteration(int clusters, Dictionary <int, UserForKMeansWine> users, initialCentrioidSelection selectiontypes) { List <Cluster> listofclusters = initiateClusters(clusters, selectiontypes, users); foreach (KeyValuePair <int, UserForKMeansWine> user in users) { try { Cluster usercluster = getClusterWithClosestCentroidForUser(listofclusters, user.Value); usercluster.clustermembers.Add(user.Value); }catch (ArgumentException e) { System.Console.Out.Write(e.Message); MessageBox.Show("e.message"); } } foreach (Cluster cluster in listofclusters) { cluster.updatecentroid(); } return(new Tuple <float, List <Cluster> >(2f, listofclusters)); }