public void RunTest2()
{
var dataset = SequentialMinimalOptimizationTest.yinyang;
double[][] inputs = dataset.Submatrix(null, 0, 1).ToJagged();
int[] labels = dataset.GetColumn(2).ToInt32();
var svm = new SupportVectorMachine(inputs: 2);
var teacher = new ProbabilisticCoordinateDescent(svm, inputs, labels);
teacher.Tolerance = 1e-10;
teacher.Complexity = 1e+10;
double error = teacher.Run();
double[] weights = svm.ToWeights();
Assert.AreEqual(0.11, error);
Assert.AreEqual(3, weights.Length);
Assert.AreEqual(-1.3231203367770932, weights[0], 1e-8);
Assert.AreEqual(-3.0227742288788493, weights[1], 1e-8);
Assert.AreEqual(-0.73074823290553259, weights[2], 1e-8);
Assert.AreEqual(svm.Threshold, weights[0]);
}