示例#1
0
        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));
        }