from sklearn import svm
from sklearn.datasets.samples_generator import make_blobs
from pandas import DataFrame
X,Y=make_blobs(n_samples=100, centers=5, n_features=2)
clf=svm.SVC(kernel='linear',probability=True)
clf.fit(X,Y)
print(clf.coef_)
此代码的输出是:-
[[-0.14808725 -0.30415025]
[ 0.01612808 0.43529163]
[-1.06694209 -0.27738544]
[-0.13195668 -0.27799574]
[ 0.03588147 0.13657989]
[ 0.04273599 0.65849432]
[ 0.68017938 -0.64049715]
[-0.09071154 -0.22828399]
[-0.01494555 -0.1300181 ]
[ 0.10260101 -0.36918253]]
那么这个10x2矩阵代表什么,更重要的是我如何获得与每个特征权重相对应的所有w [i]值。
答案 0 :(得分:0)
在线性SVM中,请注意,结果是一个超平面,该平面将类别尽可能地分开。权重表示此超平面,方法是为您提供与超平面正交的向量的坐标-这些是svm.coef _
给出的系数10 * 2矩阵的原因 :(类数为5,特征数为2) (并且sklearn的文档清晰且有用)
SVC为多类分类实现“一对一”。如果n_class是类的数目,则构造n_class *(n_class-1)/ 2分类器,每个分类器训练来自两个类的数据。
SVM的coef_属性输出相同,并且数组为:[n_class *(n_class-1)/ 2,n_features]
如果您只需要5个分类器而不是10个,则可以: