/// <summary> /// Perform a single training iteration. /// </summary> /// public void Iteration() { // loop over all clusters foreach (KMeansCluster element in _clusters) { for (int k = 0; k < element.Size(); k++) { IMLData data = element.Get(k); double distance = CalculateEuclideanDistance( element.Centroid, data); KMeansCluster tempCluster = null; bool match = false; foreach (KMeansCluster cluster in _clusters) { double d = CalculateEuclideanDistance(cluster.Centroid, element.Get(k)); if (distance > d) { distance = d; tempCluster = cluster; match = true; } } if (match) { tempCluster.Add(element.Get(k)); element.Remove(element.Get(k)); foreach (KMeansCluster element2 in _clusters) { element2.Centroid.CalcCentroid(); } CalcWcss(); } } } }
/// <summary> /// Construct the K-Means object. /// </summary> /// /// <param name="k">The number of clusters to use.</param> /// <param name="theSet">The dataset to cluster.</param> public KMeansClustering(int k, IMLDataSet theSet) { _clusters = new KMeansCluster[k]; for (int i = 0; i < k; i++) { _clusters[i] = new KMeansCluster(); } _set = theSet; SetInitialCentroids(); // break up the data over the clusters int clusterNumber = 0; foreach (IMLDataPair pair in _set) { _clusters[clusterNumber].Add(pair.Input); clusterNumber++; if (clusterNumber >= _clusters.Length) { clusterNumber = 0; } } CalcWcss(); foreach (KMeansCluster element in _clusters) { element.Centroid.CalcCentroid(); } CalcWcss(); }
/// <summary> /// Construct the K-Means object. /// </summary> /// /// <param name="k">The number of clusters to use.</param> /// <param name="theSet">The dataset to cluster.</param> public KMeansClustering(int k, IMLDataSet theSet) { _clusters = new KMeansCluster[k]; for (int i = 0; i < k; i++) { _clusters[i] = new KMeansCluster(); } _set = theSet; SetInitialCentroids(); // break up the data over the clusters int clusterNumber = 0; foreach (IMLDataPair pair in _set) { _clusters[clusterNumber].Add(pair.Input); clusterNumber++; if (clusterNumber >= _clusters.Length) { clusterNumber = 0; } } CalcWcss(); foreach (KMeansCluster element in _clusters) { element.Centroid.CalcCentroid(); } CalcWcss(); }
private static double x92c8f50710486fbe(double x3bd62873fafa6252, KMeansCluster x4bbc2c453c470189) { return (x3bd62873fafa6252 + x4bbc2c453c470189.SumSqr); }