C# Accord.NET中的多标签支持向量机
我正在尝试使用Accord.NET framework(MultilabelSupportVectorMachine类)制作一个多标签支持向量机,但根据示例,很难理解编码,例如:C# Accord.NET中的多标签支持向量机,c#,machine-learning,svm,accord.net,C#,Machine Learning,Svm,Accord.net,我正在尝试使用Accord.NET framework(MultilabelSupportVectorMachine类)制作一个多标签支持向量机,但根据示例,很难理解编码,例如: // Sample input data double[][] inputs = { new double[] { 0 }, new double[] { 3 }, new double[] { 1 }, new double[] { 2 }, }; // Outputs for ea
// Sample input data
double[][] inputs =
{
new double[] { 0 },
new double[] { 3 },
new double[] { 1 },
new double[] { 2 },
};
// Outputs for each of the inputs
int[][] outputs =
{
new[] { -1, 1, -1 },
new[] { -1, -1, 1 },
new[] { 1, 1, -1 },
new[] { -1, -1, -1 },
};
如果我的输出是一个包含不在-1和+1范围内的整数值的矩阵,我们应该使用什么编码将数据转换成这种格式呢?这是多标签支持向量机在计算时返回的输出格式。MultiClassSupportVectorMachine返回单个int,因为当您确定示例仅匹配单个类时,将使用该int,而MultiLabelSupportVectorMachine返回一个数组,该数组显示示例匹配的类,并在示例可以匹配更多类时使用 它的工作原理如下: 输出数组长度介于0(含0)和类数之间。因此,如果您有4个类,您将有如下输出数组:
{ -1, -1, 1, -1 }
这意味着输出类是2,因为1的索引是2。
我希望现在您知道这个类的输出是如何工作的,并且这为您提供了如何格式化示例输出的方向
其他信息:如果要使用MultiLabelSupportVectorMachine,但只想获得一个输出类,则可以在输出数组中获取第一个索引1。只有在您确信“一对所有”比“一对一”更好的情况下,我才建议您这样做。API已经更新,以使这种用法(针对多类问题的多标签SVM)更简单。如果您仍然需要,请查看多标签SVM文档页面的示例部分: