Exemplo n.º 1
0
        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");
        }