/// <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)); }
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); }
/// <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"); }