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); }
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();// выбираем объект * */ }