Dav*_*sta 5 machine-learning svm nonlinear-functions scikit-learn multilabel-classification
我正在寻找支持非线性内核和一对多方案的SVM实现,以执行多标签分类.最好用Python编写,或者我可以用Python用包装器调用.
我正在研究sklearn,有两种实现使用SVM进行分类:
sklearn.svm.LinearSVC - 支持使用one-rest-rest方案进行多标签分类,但它基于liblinear,因此仅支持线性内核.
sklearn.svm.SVC - 基于libsvm,支持非线性内核,但多标签分类是在一对一减少的情况下完成的,它为K-way训练K(K-1)/ 2二元分类器多类问题.
更多信息,请访问:http: //scikit-learn.org/stable/modules/multiclass.html
有谁知道任何其他直接支持多标签分类和非线性内核的SVM实现?
一种可能的解决方案也可能是根据sklearn.svm.SVC调整代码,以执行One-vs-Rest,这是否已经尝试过?
小智 3
二元相关性问题转换方法使用一对一方法进行多标签分类。人们可以使用scikit-multilearn库轻松实现具有非线性内核的 SVM 。以下是执行相同操作的示例 python 代码,其中 train_y 的每一行都是代表多个标签的 one-hot 向量(例如,[0,0,1,0,1,0])
from skmultilearn.problem_transform.br import BinaryRelevance
from sklearn.svm import SVC
# Non-linear kernel
svm = SVC(kernel='rbf')
cls = BinaryRelevance(classifier=svm)
cls.fit(train_x, train_y)
predictions = cls.predict(test_x)
Run Code Online (Sandbox Code Playgroud)