double CrossValidate(int folds)
        {
            var(observations, targets) = DataSetUtilities.LoadDecisionTreeDataSet();

            var sut         = new NoShuffleCrossValidation <double>(folds);
            var predictions = sut.CrossValidate(new RegressionDecisionTreeLearner(), observations, targets);
            var metric      = new MeanSquaredErrorRegressionMetric();

            return(metric.Error(targets, predictions));
        }
        double CrossValidate(int folds)
        {
            var targetName   = "T";
            var parser       = new CsvParser(() => new StringReader(Resources.DecisionTreeData));
            var observations = parser.EnumerateRows(v => !v.Contains(targetName)).ToF64Matrix();
            var targets      = parser.EnumerateRows(targetName).ToF64Vector();

            var sut         = new NoShuffleCrossValidation <double>(folds);
            var predictions = sut.CrossValidate(new RegressionDecisionTreeLearner(), observations, targets);
            var metric      = new MeanSquaredErrorRegressionMetric();

            return(metric.Error(targets, predictions));
        }
        double CrossValidate_Provide_Indices(int folds)
        {
            var(observations, targets) = DataSetUtilities.LoadDecisionTreeDataSet();

            var sut = new NoShuffleCrossValidation <double>(folds);

            var rowsToCrossvalidate = targets.Length / 2;
            var indices             = Enumerable.Range(0, rowsToCrossvalidate).ToArray();
            var predictions         = new double[rowsToCrossvalidate];

            sut.CrossValidate(new RegressionDecisionTreeLearner(), observations, targets, indices, predictions);
            var metric = new MeanSquaredErrorRegressionMetric();

            return(metric.Error(targets.Take(rowsToCrossvalidate).ToArray(), predictions));
        }
        double CrossValidate_Provide_Indices(int folds)
        {
            var targetName   = "T";
            var parser       = new CsvParser(() => new StringReader(Resources.DecisionTreeData));
            var observations = parser.EnumerateRows(v => !v.Contains(targetName)).ToF64Matrix();
            var targets      = parser.EnumerateRows(targetName).ToF64Vector();

            var sut = new NoShuffleCrossValidation <double>(folds);

            var rowsToCrossvalidate = targets.Length / 2;
            var indices             = Enumerable.Range(0, rowsToCrossvalidate).ToArray();
            var predictions         = new double[rowsToCrossvalidate];

            sut.CrossValidate(new RegressionDecisionTreeLearner(), observations, targets, indices, predictions);
            var metric = new MeanSquaredErrorRegressionMetric();

            return(metric.Error(targets.Take(rowsToCrossvalidate).ToArray(), predictions));
        }