Example #1
0
        private double[] process(Bitmap bmp, int n, string method)
        {
            double[,] features2D = BitmapFeatures.Intensity(bmp);

            switch (method)
            {
            case "merge":
                double[] features = FeatureReduction.Flatten(features2D);
                return(FeatureReduction.Merge(features, n));

            case "grid":
                return(FeatureReduction.GridwiseMerge(features2D, n));
            }

            return(FeatureReduction.Flatten(features2D));

            //double[] features = FeatureReduction.Flatten(features2D);
            //features = FeatureReduction.RowColSums(features2D);
            //features = FeatureReduction.LDA(features2D, 4);
            //features = FeatureReduction.PCA(features2D, 4);
            //features = FeatureReduction.SVD(features2D);
            //features = FeatureReduction.FHT(features2D);
            //features = FeatureReduction.Sort(features);
            //features = FeatureReduction.Covariance(features2D);
            //features = FeatureReduction.Merge(features, n);
            //features = FeatureReduction.Binarize(features);
            //double[] features = FeatureReduction.GridwiseMerge(features2D, n);
            //features = FeatureReduction.Discretize(features, 100);
            //features = FeatureReduction.Binarize(features);
            //return features;
        }
Example #2
0
        /// <summary>
        /// Classifies the specified test instance.
        /// </summary>
        /// <param name="test">The test instance.</param>
        /// <returns></returns>
        /// <remarks></remarks>
        public override Result Classify(Instance test)
        {
            string maxClass = "?";
            double maxProb  = float.MinValue;

            double[] features = FeatureReduction.Discretize(test.Features, 10);

            foreach (KeyValuePair <string, double> pair in Classes)
            {
                double score = Math.Log(pair.Value / TotalExamples);

                for (int i = 0; i < features.Length; i++)
                {
                    score += Math.Log(Count(pair.Key, i, features[i]) / pair.Value);
                }

                if (score > maxProb)
                {
                    maxProb  = score;
                    maxClass = pair.Key;
                }
            }

            return(new Result(maxClass, maxProb));
        }
Example #3
0
        /// <summary>
        /// Trains the classifier on the specified training instances.
        /// </summary>
        /// <param name="trainingInstances">The training instances.</param>
        /// <remarks></remarks>
        public override void Train(List <Instance> trainingInstances)
        {
            Model         = new Dictionary <string, double>();
            Classes       = new Dictionary <string, double>();
            TotalExamples = trainingInstances.Count;

            foreach (Instance train in trainingInstances)
            {
                double[] features = FeatureReduction.Discretize(train.Features, 3);

                for (int i = 0; i < features.Length; i++)
                {
                    string c = train.Class + "|" + i + "|" + features[i];

                    if (Model.ContainsKey(c))
                    {
                        Model[c] += 1;
                    }
                    else
                    {
                        Model[c] = 1;
                    }
                }

                if (Classes.ContainsKey(train.Class))
                {
                    Classes[train.Class] += 1;
                }
                else
                {
                    Classes[train.Class] = 1;
                }
            }
        }
Example #4
0
 /// <summary>
 /// Extracts intensity features from the bitmap, and uses grid merge feature reduction.
 /// </summary>
 /// <param name="bmp">The BMP.</param>
 /// <returns></returns>
 /// <remarks></remarks>
 private double[] BitmapFeatureExtract(Bitmap bmp)
 {
     double[,] features2D = BitmapFeatures.Intensity(bmp);
     double[] features = FeatureReduction.GridwiseMerge(features2D, 64);
     return(features);
 }