private static TrainingResults LoadCompressed(string path)
        {
            log.Debug("LoadNormal: {0}", path);
            TrainingHeader header  = null;
            Model          model   = null;
            IArffDataSet   dataSet = null;

            using (ZipArchive archive = ZipFile.OpenRead(path))
            {
                foreach (ZipArchiveEntry entry in archive.Entries)
                {
                    if (entry.FullName.EndsWith(headerFile, StringComparison.OrdinalIgnoreCase))
                    {
                        header = XDocument.Load(entry.Open()).XmlDeserialize <TrainingHeader>();
                    }
                    else if (entry.FullName.EndsWith(modelFile, StringComparison.OrdinalIgnoreCase))
                    {
                        model = Model.Read(entry.Open());
                    }
                    else if (entry.FullName.EndsWith(arffFile, StringComparison.OrdinalIgnoreCase))
                    {
                        using (StreamReader reader = new StreamReader(entry.Open()))
                        {
                            dataSet = ArffDataSet.LoadSimple(reader);
                        }
                    }
                }
            }

            return(new TrainingResults(model, header, dataSet));
        }
示例#2
0
        public void Compute()
        {
            var dataSet   = ArffDataSet.LoadSimple(Path.Combine(TestContext.CurrentContext.TestDirectory, "Data", @"problem.arff"));
            var problem   = new ProblemSource(dataSet).GetProblem();
            var transform = RangeTransform.Compute(problem);
            var result    = transform.Scale(problem);

            Assert.IsNotNull(result);
        }
示例#3
0
        public void Setup()
        {
            var file    = Path.Combine(TestContext.CurrentContext.TestDirectory, "data", "data.arff");
            var dataSet = ArffDataSet.LoadSimple(file);

            file = Path.Combine(TestContext.CurrentContext.TestDirectory, "data", "model.dat");
            var model = Wikiled.MachineLearning.Svm.Logic.Model.Read(file);

            instance = new LearnedClassifier(
                new DocumentParser(Global.TextSplitter, new DevExpressParserFactory(20)),
                new SvmTestClient(dataSet, model));
        }
        public async Task TestTwoClass()
        {
            var         problemFactory = new ProblemFactory(twoClassDataset);
            SvmTraining training       = new SvmTraining(problemFactory, twoClassDataset);
            var         parameters     = training.SelectParameters(TrainingHeader.CreateDefault(), CancellationToken.None);
            var         results        = await training.Train(parameters).ConfigureAwait(false);

            var file = Path.Combine(TestContext.CurrentContext.TestDirectory, "data.arff");

            threeClassDataset.Save(file);
            var        testFile = ArffDataSet.LoadSimple(file);
            SvmTesting testing  = new SvmTesting(results.Model, problemFactory);
            var        result   = testing.Test(testFile, Path.Combine(TestContext.CurrentContext.TestDirectory, "."));

            Assert.AreEqual(1, result);
        }
        public void Classify(string arff, string modelName, object result)
        {
            var file    = Path.Combine(TestContext.CurrentContext.TestDirectory, "data", arff);
            var dataSet = result.GetType() == typeof(PositivityType)
                              ? ArffDataSet.Load <PositivityType>(file)
                              : ArffDataSet.LoadSimple(file);

            file = Path.Combine(TestContext.CurrentContext.TestDirectory, "data", modelName);
            var model = Model.Read(file);

            IProblemFactory factory = new ProblemFactory(dataSet);
            var             client  = new SvmTesting(model, factory);

            var dataHolder = dataSet.CreateDataSet("Test");
            var review     = dataHolder.AddDocument();

            review.AddRecord("Good").Value = 2;
            review.AddRecord("Bad").Value  = 1;
            client.Classify(dataHolder);
            Assert.AreEqual(result, review.Class.Value);
        }
        public async Task TestMultiClass()
        {
            var dataSet = ArffDataSet.CreateSimple("Test");

            dataSet.Header.RegisterNominalClass("One", "Two", "Three");
            dataSet.UseTotal = true;
            for (int i = 0; i < 20; i++)
            {
                var one = dataSet.AddDocument();
                one.Class.Value = "One";
                one.AddRecord("Good");

                var two = dataSet.AddDocument();
                two.Class.Value = "Two";
                two.AddRecord("Bad");

                var three = dataSet.AddDocument();
                three.Class.Value = "Three";
                three.AddRecord("Some");
            }

            var         problemFactory = new ProblemFactory(dataSet);
            SvmTraining training       = new SvmTraining(problemFactory, dataSet);
            var         parameters     = training.SelectParameters(TrainingHeader.CreateDefault(), CancellationToken.None);
            var         results        = await training.Train(parameters).ConfigureAwait(false);

            var file = Path.Combine(TestContext.CurrentContext.TestDirectory, "data.arff");

            dataSet.Save(file);
            results.Model.Write(Path.Combine(TestContext.CurrentContext.TestDirectory, "label.dat"));
            var testFile = ArffDataSet.LoadSimple(file);

            SvmTesting testing = new SvmTesting(results.Model, problemFactory);
            var        result  = testing.Test(testFile, Path.Combine(TestContext.CurrentContext.TestDirectory, "."));

            Assert.AreEqual(1, result);
        }
        private static TrainingResults LoadNormal(string path)
        {
            log.Debug("LoadNormal: {0}", path);
            if (!Directory.Exists(path))
            {
                throw new ArgumentOutOfRangeException(nameof(path), path);
            }

            var file   = GetFile(path, headerFile);
            var header = File.Exists(file) ? XDocument.Load(file).XmlDeserialize <TrainingHeader>() : null;

            var          model = Model.Read(GetFile(path, modelFile));
            IArffDataSet arff;

            using (FileStream stream = new FileStream(GetFile(path, arffFile), FileMode.Open))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    arff = ArffDataSet.LoadSimple(reader);
                }
            }

            return(new TrainingResults(model, header, arff));
        }