private IDataViewClustered InitDataViewClustered(IDataView data, Row[] startCentroids) { IDataViewClustered dataViewClustered = new DataViewClustered(data); int lengthOfRows = dataViewClustered.Rows.Length; DistanceDeterminator distanceDeterminator = new DistanceDeterminator(new EuclideanDistance()); for (int i = 0; i < lengthOfRows; i++) { int bestCluster = 0; float bestDistance = float.MaxValue; var row = data.Rows[i]; for (int j = 0; j < startCentroids.Length; j++) { float distance = distanceDeterminator.Calculate(row, startCentroids[j]); if (distance < bestDistance) { bestCluster = j; bestDistance = distance; } } dataViewClustered.Clustered[i] = bestCluster; } return(dataViewClustered); }
public ActionResult <float> EvaluateClustering(DataViewClustered dataViewClustered) { IQualityMeasurement evaluator = new IndexC(); var res = evaluator.EvaluateQuality(dataViewClustered, new EuclideanDistance()); return(Ok(res)); }