示例#1
0
        public void InheritanceCompleteTest1()
        {
            SingleLinkage singleLinkage = new SingleLinkage();
            int           inheritance   = singleLinkage.TestInheritance();

            Assert.AreEqual(inheritance, -1);
        }
示例#2
0
        public void SingleLinkageCluster7()
        {
            Start            test = new Start(@"..\..\..\Data\DistanceSample3D.csv");
            List <DataPoint> temp = test.GetDataPoints();
            SingleLinkage    link = new SingleLinkage(3, temp);

            link.Run();
            int dataNum = link.GetClusters()[2].GetDataPoints().Count;

            Assert.AreEqual(dataNum, 1);
        }
示例#3
0
        public Task <string> GetClusterAnalysisAsync(IReadOnlyCollection <string[]> data)
        {
            if (data.Count == 0)
            {
                return(Task.FromException <string>(new ArgumentNullException()));
            }

            var instance      = Utils.ClusterParse(data);
            var linkage       = new SingleLinkage <DataPoint>(new DataPoint(null, null));
            var clusteringAlg = new AgglomerativeClusteringAlgorithm <DataPoint>(linkage);
            var clustering    = clusteringAlg.GetClustering(instance);
            var clustersJson  = clustering.GetDendrogramJson(true, Formatting.Indented);

            return(Task.FromResult(clustersJson));
        }
示例#4
0
        private void ClusteringWorkerDoWork(object sender, DoWorkEventArgs e)
        {
            // checks data points
            if (this._dataPoints == null || this._dataPoints.Count == 0)
            {
                return;
            }

            // selects linkage criterion
            ILinkageCriterion <DataPoint> linkage;
            var selectedIndex = e.Argument;

            switch (selectedIndex)
            {
            case 1:
                linkage = new CompleteLinkage <DataPoint>(this._dissimilarityMetric);
                break;

            case 2:
                linkage = new SingleLinkage <DataPoint>(this._dissimilarityMetric);
                break;

            case 3:
                linkage = new MinimumEnergyLinkage <DataPoint>(this._dissimilarityMetric);
                break;

            case 4:
                linkage = new CentroidLinkage <DataPoint>(this._dissimilarityMetric, DataPoint.GetMedoid);
                break;

            case 5:
                linkage = new WardsMinimumVarianceLinkage <DataPoint>(
                    this._dissimilarityMetric, DataPoint.GetMedoid);
                break;

            default:
                linkage = new AverageLinkage <DataPoint>(this._dissimilarityMetric);
                break;
            }

            // clusters data-points
            var clusteringAlg = new AgglomerativeClusteringAlgorithm <DataPoint>(linkage);

            this._clusteringResult = clusteringAlg.GetClustering(this._dataPoints);
        }