public static List <Facility> Cluster(string outputFile, double param1, double param2) { IClustering fac = new MShift(); // add some properties to particular clustering algorithms Dictionary <string, object> properties = new Dictionary <string, object>(); properties.Add("boundingBox", BoundingCluster); properties.Add("PARAM_1", param1); properties.Add("PARAM_2", param2); fac.SetProperties(properties); fac.ComputeClustering(VerticesToCluster); // save clustering result List <Facility> facilities = fac.GetFacilities(); // ClusterSolution.SaveClusteringSolution(fac, inputFile, Dialog_SaveCluster.FileName, facilities); ClusterSolution.SaveClusteringToMeshLab(fac, outputFile, facilities, VerticesToCluster); return(facilities); }
private void Main_Cluster_Click(object sender, EventArgs e) { //int numberOfClusters = 9; //Vertex[] extendedVertices = new Vertex[vertices.Length + numberOfClusters]; //for (int i = 0; i < vertices.Length; i++) //{ // extendedVertices[i] = vertices[i]; //} //vertices = extendedVertices; // IClustering fac = new MShift(); // IClustering fac = new KMeans(); // IClustering fac = new CMeans(); IClustering fac = new MShift(); // add some properties to particular clustering algorithms Dictionary <string, object> properties = new Dictionary <string, object>(); properties.Add("boundingBox", bBoxToCluster); properties.Add("PARAM_1", double.Parse(TextBox_Param1.Text)); properties.Add("PARAM_2", double.Parse(TextBox_Param2.Text)); // properties.Add("weights", new double[] { 1, 1, 1, 1, 1, 1, 1, 1 }); fac.SetProperties(properties); // cluster again! //if ( facilities != null && facilities.Count > 0 ) //{ // Vertex[] ret = new Vertex[facilities.Count]; // int index = -1; // foreach (Facility f in facilities) // { // ret[++index] = new Vertex(vertices[f.VertexIndex].Coords); // } // Array.Clear(vertices, 0, vertices.Length); // vertices = ret; //} fac.ComputeClustering(verticesToCluster); showPoints = false; // save clustering result facilities = fac.GetFacilities(); ShowCalculateClusterConvexHull(); CalculateFacilitiesPosition(); Graph.Draw(); if (Dialog_SaveCluster.ShowDialog() == DialogResult.OK) { // ClusterSolution.SaveClusteringSolution(fac, inputFile, Dialog_SaveCluster.FileName, facilities); ClusterSolution.SaveClusteringToMeshLab(fac, Dialog_SaveCluster.FileName, facilities, verticesToCluster); } // show debug window // new Statistics(bBox, fac.GetFacilities(), vertices); }