我试图了解这个Page
中的第一个示例代码double[][] inputs =
{
// input output
new double[] { 0, 1, 1, 0 }, // 0
new double[] { 0, 1, 0, 0 }, // 0
new double[] { 0, 0, 1, 0 }, // 0
new double[] { 0, 1, 1, 0 }, // 0
new double[] { 0, 1, 0, 0 }, // 0
new double[] { 1, 0, 0, 0 }, // 1
new double[] { 1, 0, 0, 0 }, // 1
new double[] { 1, 0, 0, 1 }, // 1
new double[] { 0, 0, 0, 1 }, // 1
new double[] { 0, 0, 0, 1 }, // 1
new double[] { 1, 1, 1, 1 }, // 2
new double[] { 1, 0, 1, 1 }, // 2
new double[] { 1, 1, 0, 1 }, // 2
new double[] { 0, 1, 1, 1 }, // 2
new double[] { 1, 1, 1, 1 }, // 2
};
int[] outputs = // those are the class labels
{
0, 0, 0, 0, 0,
1, 1, 1, 1, 1,
2, 2, 2, 2, 2,
};
var teacher = new MulticlassSupportVectorLearning<Linear>()
{
// using LIBLINEAR's L2-loss SVC dual for each SVM
Learner = (p) => new LinearDualCoordinateDescent()
{
Loss = Loss.L2
}
};
teacher.ParallelOptions.MaxDegreeOfParallelism = 1;
var machine = teacher.Learn(inputs, outputs);
int[] predicted = machine.Decide(inputs);
double error = new ZeroOneLoss(outputs).Loss(predicted);
到目前为止,我认为如果我错了,我理解这段代码如何解决问题。
它有一些随机数据input
,一些标记类为output
。通过这些input
和output
,MultiClass SVM
使用inputs
的{{1}}标记outputs
。
到目前为止,当我尝试将不同的数据作为input
时,我感到很困惑。
我尝试使用0和1
例如,我将第一行{0,1,1,0}更改为{1,1,1,1},我在predicted array
中为该行获得值1为什么会发生这种情况?不应该是predicted array
中该行的值等于0?因为output array
的前5个值为0?