如何获取特征的权重

Pau*_*l85 11 python machine-learning svm libsvm scikit-learn

我正在处理高度不平衡的数据集,我的想法是从我的libSVM模型中获取特征权重值.至于现在,我可以使用线性内核,在那里我可以获得特征权重,但是当我使用rbf或者poly,我无法实现我的目标.

在这里,我使用的sklearn是我的模型,很容易获得线性内核使用的特征权重.coef_.任何人都可以帮我做同样的事情rbfpoly?我到目前为止尝试做的事情如下:

svr = SVC(C=10, cache_size=200, class_weight='auto', coef0=0.0, degree=3.0, gamma=0.12,kernel='rbf', max_iter=-1, probability=True, random_state=0,shrinking=True, tol=0.001, verbose=False)
clf = svr.fit(data_train,target_train)
print clf.coef_
Run Code Online (Sandbox Code Playgroud)

Bar*_*zKP 16

文档中所述,这不仅是不可能的:

权重符合特征(原始问题中的系数).这仅适用于线性内核.

但它也没有意义.在线性SVM中,生成的分离平面与输入要素位于同一空间中.因此,其系数可视为输入"维度"的权重.

在其他内核中,分离平面存在于另一个空间中 - 原始空间的内核转换的结果.其系数与输入空间没有直接关系.实际上,对于rbf内核来说,变换后的空间是无限维的(当然,你可以在维基百科上获得这个起点).