【问题标题】:Multi Label Support Vector Machine in Accord.NETAccord.NET 中的多标签支持向量机
【发布时间】:2016-03-15 00:01:31
【问题描述】:

我正在尝试使用 Accord.NET 框架(MultilabelSupportVectorMachine 类)制作多标签支持向量机,但基于示例很难理解编码,例如:

// 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 范围内的整数值的矩阵,我们应该使用什么编码将数据转换为这种格式?

【问题讨论】:

    标签: c# machine-learning svm accord.net


    【解决方案1】:

    如果您使用 MultiLabelSupportVectorMachine 进行计算,这是输出的格式。 MultiClassSupportVectorMachine 返回单个 int,因为当您确定示例仅匹配单个类时使用它,而 MultiLabelSupportVectorMachine 返回一个数组,该数组显示示例匹配哪些类,并且在示例可以匹配更多类时使用。

    它的工作原理是这样的: 输出数组长度介于 0(含)和类数之间。因此,如果您有 4 个类,您将有一个像这样的输出数组:

    { -1, -1, 1, -1 }
    

    这意味着输出类是 2,因为 1 的索引是 2。 我希望现在您知道这个类的输出是如何工作的,并且这可以指导您如何格式化您的示例输出。

    附加信息:如果您想使用 MultiLabelSupportVectorMachine,但您只想获得一个输出类,您可以在输出数组中取第一个索引 1。仅当您确定 One-Vs-All 比 One-Vs-One 更适合您时,我才建议这样做。

    【讨论】:

    • API 已更新,使这种用法(多类问题的多标签 SVM)更简单。如果您仍然需要它,请查看多标签 SVM 文档页面的示例部分:accord-framework.net/docs/html/…
    猜你喜欢
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    • 2014-05-12
    • 2013-08-31
    • 2011-06-25
    相关资源
    最近更新 更多