private static void ProccessDataSetNominalPCA(IDataSet <int, int> training_set, IDataSet <int, int> test_set) { int cluster_count = 10; int instance_count = training_set.InstanceCount; ITemplateClusteringCentroid <int, IDataSet <int> > template_cluster = new TemplateClusteringKMeansNominal(cluster_count); TemplateDimensionReductionPCADefault template_pca = new TemplateDimensionReductionPCADefault(3); IDataSet <int> training_set_unlabeled = training_set; IClusteringCentroid <int> clustering = template_cluster.Cluster(training_set_unlabeled); double[][] transformed_data1 = new double[instance_count][]; for (int instance_index = 0; instance_index < instance_count; instance_index++) { transformed_data1[instance_index] = clustering.Transform(training_set_unlabeled.GetInstanceFeatureData(instance_index)); } IDataSet <double> data_set_transformed1 = new DataSet <double, int>(transformed_data1); ITransform transform = template_pca.GenerateTransform(data_set_transformed1); double[][] transformed_data2 = new double[instance_count][]; int[][] label_data = training_set.LabelData; Color[] instance_colors = new Color[instance_count]; Color[] label_colors = ToolsColor.GetPallete(training_set.DataContext.GetLabelDescriptor(0).ValueCount); for (int instance_index = 0; instance_index < instance_count; instance_index++) { transformed_data2[instance_index] = transform.TransformForward(data_set_transformed1.GetInstanceFeatureData(instance_index)); instance_colors[instance_index] = label_colors[label_data[instance_index][0]]; } RendererPoints <Matrix <double> > renderer = new RendererPoints <Matrix <double> >(new AlgebraLinearReal64MathNet(), 1000, 1000, (AngleRadian)0, (AngleRadian)0, 10); BitmapFast bitmap = renderer.Render(new Tuple <double[][], Color[]>(transformed_data2, instance_colors)); bitmap.Bitmap.Save("test.png"); }
public ModelClusteringCentroids(IDataContext data_context, IClusteringCentroid <DomainType> clustering, double[,] cluster_likelyhoods) : base(data_context, "ModelClusteringCentroids") { this.clustering = clustering; this.cluster_likelyhoods = cluster_likelyhoods; }