예제 #1
0
        public void TrainingTestSetSplit_Equals()
        {
            var trainingObservations1 = new F64Matrix(new double[] { 1, 2, 3, 4 }, 2, 2);
            var trainingObservations2 = new F64Matrix(new double[] { 4, 3, 2, 1 }, 2, 2);

            var trainingTargets1 = new double[] { 1, 2 };
            var trainingTargets2 = new double[] { 2, 1 };

            var testObservations1 = new F64Matrix(new double[] { 1, 2, 3, 4 }, 2, 2);
            var testObservations2 = new F64Matrix(new double[] { 4, 3, 2, 1 }, 2, 2);

            var testTargets1 = new double[] { 1, 2 };
            var testTargets2 = new double[] { 2, 1 };


            var sut       = new TrainingTestSetSplit(trainingObservations1, trainingTargets1, testObservations1, testTargets1);
            var equal     = new TrainingTestSetSplit(trainingObservations1, trainingTargets1, testObservations1, testTargets1);
            var notEqual1 = new TrainingTestSetSplit(trainingObservations2, trainingTargets1, testObservations1, testTargets1);
            var notEqual2 = new TrainingTestSetSplit(trainingObservations1, trainingTargets2, testObservations1, testTargets1);
            var notEqual3 = new TrainingTestSetSplit(trainingObservations1, trainingTargets1, testObservations2, testTargets1);
            var notEqual4 = new TrainingTestSetSplit(trainingObservations1, trainingTargets1, testObservations1, testTargets2);

            Assert.AreEqual(sut, equal);
            Assert.AreNotEqual(sut, notEqual1);
            Assert.AreNotEqual(sut, notEqual2);
            Assert.AreNotEqual(sut, notEqual3);
            Assert.AreNotEqual(sut, notEqual4);
        }
예제 #2
0
        public void TrainingTestIndexSplitterExtensions_SplitSet()
        {
            var observations = new F64Matrix(new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, 10, 1);
            var targets      = new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

            var splitter = new NoShuffleTrainingTestIndexSplitter <double>(0.6);

            var actual = splitter.SplitSet(observations, targets);

            var trainingIndices = Enumerable.Range(0, 6).ToArray();
            var testIndices     = Enumerable.Range(6, 4).ToArray();

            var expected = new TrainingTestSetSplit(
                new ObservationTargetSet((F64Matrix)observations.Rows(trainingIndices),
                                         targets.GetIndices(trainingIndices)),
                new ObservationTargetSet((F64Matrix)observations.Rows(testIndices),
                                         targets.GetIndices(testIndices)));

            Assert.AreEqual(expected, actual);
        }
        public void RegressionGradientBoostLearner_LearnWithEarlyStopping_when_more_featuresPerSlit_than_featureCount_Throw()
        {
            var sut = new RegressionSquareLossGradientBoostLearner(500, 0.1, 10, 15, 0.01, 0.8,
                                                                   featuresPrSplit: 4);

            IRegressionMetric metric = new MeanSquaredErrorRegressionMetric();

            var trainingRows = 5;
            var testRows     = 6;
            var cols         = 3;

            var split = new TrainingTestSetSplit(
                new F64Matrix(trainingRows, cols), new double[trainingRows],
                new F64Matrix(testRows, cols), new double[testRows]);

            var model = sut.LearnWithEarlyStopping(
                split.TrainingSet.Observations, split.TrainingSet.Targets,
                split.TestSet.Observations, split.TestSet.Targets,
                metric,
                earlyStoppingRounds: 20);
        }