コード例 #1
0
        public void ClusteringTest()
        {
            List <ClusteredData> datanew    = new List <ClusteredData>();
            EuclidianDistance    distance   = new EuclidianDistance();
            K_Means         k_means         = new K_Means(2, 0.1, distance);
            ClusterAnalysis clusterAnalysis = new ClusterAnalysis(k_means);

            datanew.Add(new ClusteredData(0, 0));
            datanew.Add(new ClusteredData(0, 20));
            datanew.Add(new ClusteredData(20, 0));
            datanew.Add(new ClusteredData(20, 20));

            var list = clusterAnalysis.Clustering(datanew);

            Assert.AreEqual(2, list.Count);

            var flag = from value in k_means.FinishesCentroids.Values
                       where (value.X == 0 && value.Y == 0) ||
                       (value.X == 0 && value.Y == 20) ||
                       (value.X == 20 && value.Y == 20) ||
                       (value.X == 20 && value.Y == 0) ||
                       (value.X == 10 && value.Y == 20) ||
                       (value.X == 0 && value.Y == 10) ||
                       (value.X == 20 && value.Y == 10) ||
                       (value.X == 0 && value.Y == 10)
                       select value;

            Assert.AreEqual(0.1, k_means.CoefficientTaboo);
            Assert.AreEqual(2, k_means.CountOfClusters);
            Assert.IsNotNull(flag);
        }
コード例 #2
0
        static void Main(string[] args)
        {
            List <ClusteredData> datanew    = new List <ClusteredData>();
            EuclidianDistance    distance   = new EuclidianDistance();
            K_Means         k_means         = new K_Means(2, 0.1, distance);
            ClusterAnalysis clusterAnalysis = new ClusterAnalysis(k_means);

            datanew.Add(new ClusteredData(0, 0));
            datanew.Add(new ClusteredData(0, 20));
            datanew.Add(new ClusteredData(20, 0));
            datanew.Add(new ClusteredData(20, 20));

            var list = clusterAnalysis.Clustering(datanew);

            /*
             * List<ClusteredData> datanew = new List<ClusteredData>();
             * List<K_Means> k_meansList = new List<K_Means>();
             * List<List<Cluster>> clustersList = new List<List<Cluster>>();
             * System.Diagnostics.Stopwatch myStopwatch = new System.Diagnostics.Stopwatch();
             * EuclidianDistance distance = new EuclidianDistance();
             *
             * datanew.Add(new ClusteredData(0,0));
             * datanew.Add(new ClusteredData(0, 20));
             * datanew.Add(new ClusteredData(20, 0));
             * datanew.Add(new ClusteredData(20, 20));
             *
             * var ewrt = datanew.Select(Er => Er.X);
             * var ety = ewrt.Average();
             *
             *
             *
             * var e = datanew.Average(er => er.X);
             *
             *
             * myStopwatch.Start(); //запуск
             * for (var i = 0; i < 1000; i++)
             * {
             *  K_Means k_means = new K_Means(2, 0.1, distance);
             *  clustersList.Add(k_means.Clustering(datanew));
             *  k_meansList.Add(k_means);
             *  Thread.Sleep(10);
             *
             *  var flag = k_means.FinishesCentroids.ContainsValue(new Centroid(0, 0));
             *  var flag1 = k_means.FinishesCentroids.ContainsValue(new Centroid(0, 20));
             *  var flag2 = k_means.FinishesCentroids.ContainsValue(new Centroid(20, 20));
             *  var flag3 = k_means.FinishesCentroids.ContainsValue(new Centroid(20, 0));
             * }
             * myStopwatch.Stop();
             *
             * var fulltime = myStopwatch.ElapsedMilliseconds;
             * double Onetime = myStopwatch.ElapsedMilliseconds/1000.0;
             *
             * int a = 0;
             * int b = 0;
             * int c = 0;
             * int d = 0;
             *
             * foreach (var list in clustersList)
             * {
             *  a += list.Count(q => q.Data.Count == 3);
             *  b += list.Count(q => q.Data.Count == 2);
             *  c += list.Count(q => q.Data.Count == 1);
             *  d += list.Count(q => q.Data.Count == 0);
             * }
             * b = b / 2;
             * var ads = new Cluster(1, new Centroid(1, 10));
             * //ads.IntraClusterDistance();
             *
             * //// Поиск объектов класса Cluster в списке optimumClusters с максимальным внутрикластерным расcтоянием
             * //var nonOptimumClusters = from list in clustersList // определяем каждый объект из clusters как cluster
             * //                         where
             * //                         select cluster.IntraClusterDistance();// выбираем объект
             *
             */
        }