コード例 #1
0
        /// <summary>
        /// Splits the observations and targets into a training and a test set.
        /// </summary>
        /// <param name="splitter">The type of splitter used for dertermining the distribution of observations</param>
        /// <param name="observations">The observations for the problem</param>
        /// <param name="targets">The targets for the problem</param>
        /// <returns></returns>
        public static TrainingTestSetSplit SplitSet(this ITrainingTestIndexSplitter <double> splitter,
                                                    F64Matrix observations, double[] targets)
        {
            if (observations.RowCount != targets.Length)
            {
                throw new ArgumentException("Observations and targets has different number of rows");
            }

            var indexSplit  = splitter.Split(targets);
            var trainingSet = new ObservationTargetSet((F64Matrix)observations.Rows(indexSplit.TrainingIndices),
                                                       targets.GetIndices(indexSplit.TrainingIndices));

            var testSet = new ObservationTargetSet((F64Matrix)observations.Rows(indexSplit.TestIndices),
                                                   targets.GetIndices(indexSplit.TestIndices));

            return(new TrainingTestSetSplit(trainingSet, testSet));
        }
コード例 #2
0
        public void ObservationTargetSet_Equals()
        {
            var observations1 = new F64Matrix(new double[] { 1, 2, 3, 4 }, 2, 2);
            var observations2 = new F64Matrix(new double[] { 4, 3, 2, 1 }, 2, 2);

            var targets1 = new double[] { 1, 2 };
            var targets2 = new double[] { 2, 1 };

            var sut       = new ObservationTargetSet(observations1, targets1);
            var equal     = new ObservationTargetSet(observations1, targets1);
            var notEqual1 = new ObservationTargetSet(observations2, targets1);
            var notEqual2 = new ObservationTargetSet(observations1, targets2);
            var notEqual3 = new ObservationTargetSet(observations1, targets2);

            Assert.AreEqual(sut, equal);
            Assert.AreNotEqual(sut, notEqual1);
            Assert.AreNotEqual(sut, notEqual2);
            Assert.AreNotEqual(sut, notEqual3);
        }
コード例 #3
0
 /// <summary>
 /// Container for storing training set/test set split.
 /// </summary>
 /// <param name="trainingSet"></param>
 /// <param name="testSet"></param>
 public TrainingTestSetSplit(ObservationTargetSet trainingSet, ObservationTargetSet testSet)
 {
     TrainingSet = trainingSet ?? throw new ArgumentNullException("trainingSet");
     TestSet     = testSet ?? throw new ArgumentNullException("testSet");
 }