private Problem LoadData(bool withScaling = false)
        {
            var             file    = Path.Combine(TestContext.CurrentContext.TestDirectory, @".\Data\data.arff");
            var             arff    = ArffDataSet.Load <PositivityType>(file);
            IProblemFactory factory = new ProblemFactory(arff);

            if (withScaling)
            {
                factory = factory.WithRangeScaling();
            }

            return(factory.Construct(arff).GetProblem());
        }
Beispiel #2
0
        public static IMachineSentiment Load(string path)
        {
            if (string.IsNullOrEmpty(path))
            {
                throw new ArgumentException("Value cannot be null or empty.", nameof(path));
            }

            log.LogInformation("Loading {0}...", path);
            IArffDataSet reviews    = ArffDataSet.Load <PositivityType>(Path.Combine(path, "data.arff"));
            var          classifier = new Classifier();

            classifier.Load(Path.Combine(path, "training.model"));
            return(new MachineSentiment(reviews, classifier));
        }
        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);
        }