如何在matlab/python中针对多标签数据训练SVM?

如何在matlab/python中针对多标签数据训练SVM?,matlab,machine-learning,svm,Matlab,Machine Learning,Svm,我正在训练一个问题,因此我的输出(y)可能不止一个类。例如,SVM可以说,这个输入向量是1类,但它也可以说,这个输入向量是1类和5类。这与多类SVM问题不同,在多类SVM问题中,输出可以是多个类中的一个。我的输出可以是多个类中的一个或多个 示例:我的训练数据如下(对于每个训练向量X) 其中右侧是要预测的Y(这里我展示了一个有4个类的示例,其中1表示类成员) 我知道我可能需要使用结构支持向量机,如这里讨论的: 然而,这一切让我很困惑 然而,我不想简单地对每个可能的输出类使用一对所有分类器。我需要考

我正在训练一个问题,因此我的输出(y)可能不止一个类。例如,SVM可以说,这个输入向量是1类,但它也可以说,这个输入向量是1类和5类。这与多类SVM问题不同,在多类SVM问题中,输出可以是多个类中的一个。我的输出可以是多个类中的一个或多个

示例:我的训练数据如下(对于每个训练向量X)

其中右侧是要预测的Y(这里我展示了一个有4个类的示例,其中1表示类成员)

我知道我可能需要使用结构支持向量机,如这里讨论的:

然而,这一切让我很困惑

然而,我不想简单地对每个可能的输出类使用一对所有分类器。我需要考虑到类之间的关系,所以我想我需要的是一个结构支持向量机。我的训练数据将有一些实例标记为单个类,其他实例标记为多个类


我猜我是在问如何处理这个问题,如果你知道在Matlab或Python中有这样的程序包。

< P>你可以考虑在Python中使用MeKa接口的SICKIT学习或工具和SCIKIT多学习。< /P> < P>作为SICKIT Multuple的作者,我可以推荐从Python透视图使用它。因为它是迄今为止python中最大的多标签分类库,并且与scikit一起使用非常方便。您可能应该使用github的主版本,而不是2年前的0.0.1版。我们计划下周发布一个版本,这是一个非常大的更新,有新的分类器和许多其他的。它还允许您与meka交互

在您的案例中,使用4个标签,您可以使用基本问题转换方法之一获得良好的结果-标签功率集或分类器链,位于skmultilearn.problem_transform.lp和skmultilearn.problem_transform.cc中-更复杂的方法主要适用于4个标签不经常出现的大标签不平衡情况

您可以通过以下方式从git获取库并将其安装在pip中:

pip安装git+https://git@github.com:scikit multilearn/scikit multilearn.git

X_1   [1 0 0 0]
X_2   [0 1 1 0]
X_3   [0 0 0 1]
X_4   [1 1 0 1]