public void NotEnoughSamplesTest1()
{
Accord.Math.Random.Generator.Seed = 0;
int[] labels = Matrix.Vector(10, 1).Concatenate(Matrix.Vector(30, 0));
Vector.Shuffle(labels);
var crossvalidation = new CrossValidation<MulticlassSupportVectorMachine>(size: 40, folds: 10)
{
RunInParallel = false,
Fitting = (int index, int[] indicesTrain, int[] indicesValidation) =>
{
var labelsValidation = labels.Submatrix(indicesValidation);
int countValidation = labelsValidation.Count(x => x == 1);
Assert.AreEqual(2, countValidation);
var labelsTraining = labels.Submatrix(indicesTrain);
int countTraining = labelsTraining.Count(x => x == 1);
Assert.AreEqual(9 * 2, countTraining);
return new CrossValidationValues<MulticlassSupportVectorMachine>(null, 0, 0);
}
};
bool thrown = false;
try { crossvalidation.Compute(); }
catch (Exception) { thrown = true; }
Assert.IsTrue(thrown);
crossvalidation = new CrossValidation<MulticlassSupportVectorMachine>(labels, 2, folds: 10)
{
RunInParallel = false,
Fitting = (int index, int[] indicesTrain, int[] indicesValidation) =>
{
var labelsValidation = labels.Submatrix(indicesValidation);
int countValidation = labelsValidation.Count(x => x == 1);
Assert.AreEqual(1, countValidation);
var labelsTraining = labels.Submatrix(indicesTrain);
int countTraining = labelsTraining.Count(x => x == 1);
Assert.AreEqual(9, countTraining);
return new CrossValidationValues<MulticlassSupportVectorMachine>(null, 0, 0);
}
};
crossvalidation.Compute();
}