public override IModelLikelihood <int, int> GenerateModelLikelihood(IDataSet <int, int> training_set) { //TODO this asumes our label is finite and what not, maybe a bit silly double[] priors = new double[training_set.DataContext.GetLabelDescriptor(0).ValueCount]; int[] instance_labels = training_set.GetLabelDataColumn(0); DictionaryCount <int> count_map = new DictionaryCount <int>(instance_labels); foreach (int key in count_map.Keys) { priors[key] = ((double)count_map.Get(key) / ((double)count_map.TotalCount)); } IDictionary <int[], int[]> occurences = new DictionaryArrayKey <int, int[]>(); for (int instance_index = 0; instance_index < training_set.InstanceCount; instance_index++) { int [] instance_features = training_set.GetInstanceFeatureData(instance_index); if (!occurences.ContainsKey(instance_features)) { occurences[instance_features] = new int[priors.Length + 1]; //index 0 is for total } occurences[instance_features][0]++; occurences[instance_features][instance_labels[instance_index] + 1]++; } return(new ModelLikelihoodNominalJointTable <int>(training_set.DataContext, priors, occurences)); }
public IModelDiscreteIterative <double, int> GenerateModelDiscreteIncremental(IDataSet <double, int> training_set) { ModelNearestNeighborListDefault model = new ModelNearestNeighborListDefault(training_set.DataContext); IList <Tuple <double[], int> > training_instances = new List <Tuple <double[], int> >(); for (int instance_index = 0; instance_index < training_set.InstanceCount; instance_index++) { training_instances.Add(new Tuple <double[], int>(training_set.GetInstanceFeatureData(instance_index), training_set.GetInstanceLabelData(instance_index)[0])); } model.Add(training_instances); return(model); }
public IModelDiscreteIterative <int, int> GenerateModelDiscreteIncremental(IDataSet <int, int> training_set) { //TODO check data context ModelNearestNeighborList <int, int, int> model = new ModelNearestNeighborList <int, int, int>(training_set.DataContext, new FunctionDistanceHamming()); IList <Tuple <int[], int> > training_instances = new List <Tuple <int[], int> >(); for (int instance_index = 0; instance_index < training_set.InstanceCount; instance_index++) { training_instances.Add(new Tuple <int[], int>(training_set.GetInstanceFeatureData(instance_index), training_set.GetInstanceLabelData(instance_index)[0])); } model.Add(training_instances); return(model); }
public ReportLikelihood <DomainType, LabelType> GenerateAndTestLikelihood(IDataSet <DomainType, LabelType> training_set, IDataSet <DomainType, LabelType> test_set) { IModelLikelihood <DomainType, LabelType> model = GenerateModelLikelihood(training_set); double[][] likelihoods = new double[test_set.InstanceCount][]; LabelType[] labels = new LabelType[test_set.InstanceCount]; for (int instance_index = 0; instance_index < test_set.InstanceCount; instance_index++) { likelihoods[instance_index] = model.GetLikelihoods(test_set.GetInstanceFeatureData(instance_index)); } return(new ReportLikelihood <DomainType, LabelType>(model, likelihoods, labels)); }
public IModelLabelIterative <double, double> GenerateModelLabelIterative(IDataSet <double, double> training_set) { //ModelNearestNeighborKDTreeDefault model = new ModelNearestNeighborKDTreeDefault(training_set.DataContext); ModelNearestNeighborKDTree <double, double, double> model = new ModelNearestNeighborKDTree <double, double, double>("ModelKNNIneterval", training_set.DataContext, new AlgebraRealFloat64(), new FunctionDistanceEuclidean()); IList <Tuple <double[], double> > training_instances = new List <Tuple <double[], double> >(); for (int instance_index = 0; instance_index < training_set.InstanceCount; instance_index++) { training_instances.Add(new Tuple <double[], double>(training_set.GetInstanceFeatureData(instance_index), training_set.GetInstanceLabelData(instance_index)[0])); } model.Add(training_instances); return(model); }
public IModelDiscreteIterative <DomainType, LabelType> GenerateModelDiscrete(IDataSet <DomainType, LabelType> training_set) { ModelNearestNeighborKDTree <DomainType, DistanceType, LabelType> model = new ModelNearestNeighborKDTree <DomainType, DistanceType, LabelType>( this.DataContext, this.kdtree.Copy(), this.DistanceFunction, this.voting_system, this.neighbor_count); IList <Tuple <DomainType[], LabelType> > training_instances = new List <Tuple <DomainType[], LabelType> >(); for (int instance_index = 0; instance_index < training_set.InstanceCount; instance_index++) { training_instances.Add(new Tuple <DomainType[], LabelType>(training_set.GetInstanceFeatureData(instance_index), training_set.GetInstanceLabelData(instance_index)[0])); } model.Add(training_instances); return(model); }
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"); }