Changeset 17134 for branches/2988_ModelsOfModels2/HeuristicLab.Algorithms.EMM/KMeansClusterizationAlgorithm.cs
- Timestamp:
- 07/11/19 16:30:22 (5 years ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
branches/2988_ModelsOfModels2/HeuristicLab.Algorithms.EMM/KMeansClusterizationAlgorithm.cs
r17133 r17134 21 21 22 22 using HeuristicLab.Core; 23 using System; 23 24 using System.Collections.Generic; 24 25 25 26 namespace HeuristicLab.Algorithms.EvolvmentModelsOfModels { 26 public class EMModelsClusterizationAlgorithm {27 public class KMeansClusterizationAlgorithm { 27 28 public int K { get; private set; } 28 public EMModelsClusterizationAlgorithm() {29 public KMeansClusterizationAlgorithm() { 29 30 } 30 public EMModelsClusterizationAlgorithm(int k) {31 public KMeansClusterizationAlgorithm(int k) { 31 32 K = k; 32 33 } 33 public EMModelsClusterizationAlgorithm(EMModelsClusterizationAlgorithm old) {34 public KMeansClusterizationAlgorithm(KMeansClusterizationAlgorithm old) { 34 35 this.K = old.K; 35 36 } … … 52 53 } 53 54 bool flag = true; 54 55 while (flag ) {55 int count = 0; 56 while (flag&&(count<1000)) { 56 57 clusters.Clear(); 57 58 for (int i = 0; i < k; i++) { … … 61 62 for (int i = 0; i < mapSize; i++) { 62 63 numberCluster[i] = LookCloseCentroid(centroids, distances, i, k); 63 clusters[numberCluster[i]].Add( numberCluster[i]);64 clusters[numberCluster[i]].Add(i); 64 65 } 65 66 k = NullSizeClusterDelete(centroids, clusters, mapSize, numberCluster, k); … … 74 75 averageClusterDistance.Clear(); 75 76 } 77 count++; 76 78 } 77 79 return k; … … 110 112 } 111 113 clusters.Remove(clusters[i - iter]); 112 centroids.Remove( i - iter);114 centroids.Remove(centroids[i - iter]); 113 115 iter++; 114 116 } … … 117 119 return k; 118 120 } 119 p rivatestatic void AverageClusterDistanceCalculation(List<double> averageClusterDistance, double[,] distances, List<int> numberCluster, int MapSize, int currentClusterNumber) {121 public static void AverageClusterDistanceCalculation(List<double> averageClusterDistance, double[,] distances, List<int> numberCluster, int MapSize, int currentClusterNumber) { 120 122 int m = 0; 121 123 for (int i = 0; i < MapSize; i++) { … … 124 126 for (int j = 0; j < MapSize; j++) { 125 127 if (numberCluster[j] == currentClusterNumber) 126 averageClusterDistance[m] += distances[i, j];128 averageClusterDistance[m] += Math.Abs(distances[i, j]); 127 129 } 128 130 m++;
Note: See TracChangeset
for help on using the changeset viewer.