コード例 #1
0
        private static void CreateClusters(IDataset data, string target, int contours, out IClusteringModel contourCluster, out Dictionary <int, string> contourNames, out double[][] borders)
        {
            var cpd = new ClusteringProblemData((Dataset)data, new[] { target });

            contourCluster = KMeansClustering.CreateKMeansSolution(cpd, contours, 3).Model;

            borders = Enumerable.Range(0, contours).Select(x => new[] { double.MaxValue, double.MinValue }).ToArray();
            var clusters     = contourCluster.GetClusterValues(cpd.Dataset, cpd.AllIndices).ToArray();
            var targetvalues = cpd.Dataset.GetDoubleValues(target).ToArray();

            foreach (var i in cpd.AllIndices)
            {
                var cl  = clusters[i] - 1;
                var clv = targetvalues[i];
                if (borders[cl][0] > clv)
                {
                    borders[cl][0] = clv;
                }
                if (borders[cl][1] < clv)
                {
                    borders[cl][1] = clv;
                }
            }

            contourNames = new Dictionary <int, string>();
            for (var i = 0; i < contours; i++)
            {
                contourNames.Add(i, "[" + borders[i][0] + ";" + borders[i][1] + "]");
            }
        }
コード例 #2
0
 private KMeansClustering(KMeansClustering original, Cloner cloner)
     : base(original, cloner)
 {
 }