Пример #1
0
        public void RegressionDecisionTreeModel_Load()
        {
            var(observations, targets) = DataSetUtilities.LoadDecisionTreeDataSet();

            var reader = new StringReader(m_regressionDecisionTreeModelString);
            var sut    = RegressionDecisionTreeModel.Load(() => reader);

            var predictions = sut.Predict(observations);

            var evaluator = new MeanSquaredErrorRegressionMetric();
            var error     = evaluator.Error(targets, predictions);

            Assert.AreEqual(0.032120286249559482, error, 0.0000001);
        }
Пример #2
0
        public void RegressionDecisionTreeModel_Load()
        {
            var parser       = new CsvParser(() => new StringReader(Resources.DecisionTreeData));
            var observations = parser.EnumerateRows("F1", "F2").ToF64Matrix();
            var targets      = parser.EnumerateRows("T").ToF64Vector();

            var reader = new StringReader(RegressionDecisionTreeModelString);
            var sut    = RegressionDecisionTreeModel.Load(() => reader);

            var predictions = sut.Predict(observations);

            var evaluator = new MeanSquaredErrorRegressionMetric();
            var error     = evaluator.Error(targets, predictions);

            Assert.AreEqual(0.032120286249559482, error, 0.0000001);
        }
        RegressionDecisionTreeModel CreateTree(F64Matrix observations, double[] targets, int[] indices, Random random)
        {
            var learner = new DecisionTreeLearner(
                new DepthFirstTreeBuilder(m_maximumTreeDepth,
                                          m_featuresPrSplit,
                                          m_minimumInformationGain,
                                          m_random.Next(),
                                          new RandomSplitSearcher(m_minimumSplitSize, m_random.Next()),
                                          new RegressionImpurityCalculator()));

            var treeIndicesLength = (int)Math.Round(m_subSampleRatio * (double)indices.Length);
            var treeIndices       = new int[treeIndicesLength];

            for (int j = 0; j < treeIndicesLength; j++)
            {
                treeIndices[j] = indices[random.Next(indices.Length)];
            }

            var model = new RegressionDecisionTreeModel(learner.Learn(observations, targets, treeIndices));

            return(model);
        }
        public void RegressionModel_Save_Load()
        {
            #region learner creation

            // Use StreamReader(filepath) when running from filesystem
            var parser     = new CsvParser(() => new StringReader(Resources.winequality_white));
            var targetName = "quality";

            // read feature matrix
            var observations = parser.EnumerateRows(c => c != targetName)
                               .ToF64Matrix();

            // read regression targets
            var targets = parser.EnumerateRows(targetName)
                          .ToF64Vector();

            // create learner
            var learner = new RegressionDecisionTreeLearner();

            #endregion

            // learns a ClassificationDecisionTreeModel
            var model = learner.Learn(observations, targets);

            var writer = new StringWriter();
            model.Save(() => writer);

            // save to file
            //model.Save(() => new StreamWriter(filePath));

            var text        = writer.ToString();
            var loadedModel = RegressionDecisionTreeModel.Load(() => new StringReader(text));

            // load from file
            //RegressionDecisionTreeModel.Load(() => new StreamReader(filePath));
        }