示例#1
0
        static void Main(string[] args)
        {
            // Classifier setup
            var distance   = new ManhattanDistance();
            var classifier = new BasicClassifier(distance);

            // Training
            string dataPath = @"../data/trainingsample.csv";

            Console.WriteLine($"Reading training data from {dataPath}");
            Observation[] trainingSet = DataReader.ReadObservations(dataPath);
            classifier.Train(trainingSet);

            // Validation
            string validationPath = @"../data/validationsample.csv";

            Console.WriteLine($"Reading validation data from {validationPath}");
            Observation[] validationSet = DataReader.ReadObservations(validationPath);
            Console.WriteLine("Validating the classifier...");
            var correct = Evaluator.Correct(validationSet, classifier);

            Console.WriteLine("Classification score: {0:P2}", correct);

            Console.ReadLine();
        }
示例#2
0
        public void Test_model_Evaluator_scoring()
        {
            // arrange
            var    distance     = new ManhattanDistance();
            var    classifier   = new BasicClassifier(distance);
            string trainingPath = Path.Combine(TestContext.DeploymentDirectory, "digits", "trainingsample.csv");
            var    trainingData = DataReader.ReadObservations(trainingPath);

            classifier.Train(trainingData);
            // act
            var result = Evaluator.Score(trainingData[0], classifier);

            // assert
            Assert.AreEqual(result, 1.0);
        }
示例#3
0
        public void Test_Base_Classifier_training()
        {
            //arrange
            var    distance     = new ManhattanDistance();
            var    classifier   = new BasicClassifier(distance);
            string trainingPath = Path.Combine(TestContext.DeploymentDirectory, "digits", "trainingsample.csv");
            var    trainingData = DataReader.ReadObservations(trainingPath);

            classifier.Train(trainingData);
            //act
            string labelResult = classifier.Predict(trainingData[0].Pixels);

            //assert
            Assert.IsFalse(string.IsNullOrEmpty(labelResult));
        }
示例#4
0
        private static BasicClassifier GetTrainingClassifier()
        {
            var baseDirectory = @"C:\Users\pavel\Documents\Visual Studio 2017\Projects\DigitRecognizer\DigitRecognizer\";

            var distance   = new EuclidianDistance();
            var classifier = new BasicClassifier(distance);

            var trainingPath = $@"{baseDirectory}train.csv";

            var training
                = DataReader.ReadObservations(trainingPath);

            classifier.Train(training);

            return(classifier);
        }
示例#5
0
        static void Main(string[] args)
        {
            var distance   = new ManhattanDistance();
            var classifier = new BasicClassifier(distance);

            var trainingPath = "./data/train_truncated.csv";
            var training     = DataReader.ReadObservations(trainingPath);

            classifier.Train(training);

            var validationPath = "./data/validate_truncated.csv";
            var validation     = DataReader.ReadObservations(validationPath);

            var correct = Evaluator.Correct(validation, classifier);

            Console.WriteLine("Correctly classified {0:P2}", correct);
        }
示例#6
0
        static void Main(string[] args)
        {
            var distance   = new ManhattanDistance();
            var classifier = new BasicClassifier(distance);

            var trainingPath = @"C:\Users\ifeanyi\Documents\visual studio 2013\Projects\MLImageDigitizer\MLImageDigitizer\Data\trainingdata.csv";
            var training     = DataReader.ReadObservations(trainingPath);

            classifier.Train(training);

            var validationPath = @"C:\Users\ifeanyi\Documents\visual studio 2013\Projects\MLImageDigitizer\MLImageDigitizer\Data\validationdata.csv";
            var validation     = DataReader.ReadObservations(validationPath);

            var correct = Evaluator.Correct(validation, classifier);

            Console.WriteLine("Correctly classified: {0:P2}", correct);

            Console.ReadLine();
        }
示例#7
0
        static void Main(string[] args)
        {
            var classifier = new BasicClassifier();
            var trainingPath = String.Format("{0}\\trainingsample.csv",System.IO.Directory.GetCurrentDirectory());
            var validationPath = String.Format("{0}\\validationsample.csv", System.IO.Directory.GetCurrentDirectory());

            Console.WriteLine("Training Data...");

            var training = DigitDataReader.ReadObservations(trainingPath);

            classifier.Train(training);

            var validation = DigitDataReader.ReadObservations(validationPath);

            var correctAverage = Evaluator.Correct(validation, classifier);

            Console.WriteLine("Correctly classified: {0:P2}", correctAverage);

            Console.WriteLine("Press Enter to exit...");
            Console.ReadLine();
        }
示例#8
0
    static void Main(string[] args)
    {
        var distance   = new ManhattanDistance();
        var classifier = new BasicClassifier(distance);

        var dataPath     = @"/Users/espen/git/ML-book-experiments/DigitsRecognizer/data/";
        var trainingPath = dataPath + "trainingsample.csv";
        var trainingSet  = DataReader.ReadObservations(trainingPath);

        classifier.Train(trainingSet);

        var validationPath = dataPath + "validationsample.csv";
        var validationSet  = DataReader.ReadObservations(validationPath);

        var correct = Evaluator.Correct(validationSet, classifier);

        Console.WriteLine($"Correctly classified: {correct:P2}");

        Console.WriteLine("Press enter to exit.");
        Console.ReadLine();
    }
示例#9
0
        static void Main(string[] args)
        {
            var distance   = new ManhattanDistance();
            var classifier = new BasicClassifier(distance);

            //@:写路径字符串可以让字符串不需要转义,否则需要写两个\\
            //读取训练集
            var trainingPath = @"D:\SojS\machine-learning\machine-learning-projects-for-dot-net-developers\chapter-1\DigitsRecognizer\Data\trainingsample.csv";
            var training     = DataReader.ReadObservations(trainingPath);

            //训练基本分类器
            classifier.Train(training);

            //读取验证集
            var validationPath = @"D:\SojS\machine-learning\machine-learning-projects-for-dot-net-developers\chapter-1\DigitsRecognizer\Data\validationsample.csv";
            var validation     = DataReader.ReadObservations(validationPath);

            //验证分类器
            var correct = Evaluator.Correct(validation, classifier);

            Console.WriteLine("{0:P2}", correct);

            Console.ReadLine();
        }
示例#10
0
        static void Main(string[] args)
        {
            IClassifier classifier      = new BasicClassifier();
            ReadHelper  trainingSamples = new ReadHelper("trainingsample.csv");
            var         trainingSample  = trainingSamples.Records;

            Console.WriteLine("Training done");

            //Console.WriteLine("Which image(as row of file) would you like to identify?");
            //var k = int.Parse(Console.ReadLine());

            ReadHelper validationSamples = new ReadHelper("validationsample.csv");
            var        recordsToValidate = validationSamples.Records;

            //var recordToValidate = validationSamples.Records[k];
            Console.WriteLine("Validate done");

            int notRecognized = recordsToValidate.Length;

            for (int k = 0; k < recordsToValidate.Length; k++)
            {
                var recordToValidate = validationSamples.Records[k];
                var result           = classifier.Predict(recordToValidate, trainingSamples.Records).ToArray();
                var sortedResult     = result.OrderBy(x => x.Distance).First();
                if (sortedResult.Number != recordToValidate.Number)
                {
                    Console.WriteLine($"Probably it is {sortedResult.Number}, it's distance is {Math.Floor(sortedResult.Distance)}");
                    Console.WriteLine($"It should be: {recordToValidate.Number}");
                    notRecognized--;
                }
            }
            decimal accuracy = (notRecognized / 500m) * 100;

            Console.WriteLine($"Accuracy: {accuracy}%");
            Console.ReadLine();
        }
 public BasicClassifierTests()
 {
     classifier = new BasicClassifier(distance);
 }