コード例 #1
0
        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);
        }
コード例 #2
0
        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));
        }