如何确定 SVM 中非线性内核的特征重要性

Jib*_*hew 6 python machine-learning svm scikit-learn

我正在使用以下代码进行特征重要性计算。

from matplotlib import pyplot as plt
from sklearn import svm

def features_importances(coef, names):
    imp = coef
    imp,names = zip(*sorted(zip(imp,names)))
    plt.barh(range(len(names)), imp, align='center')
    plt.yticks(range(len(names)), names)
    plt.show()

features_names = ['input1', 'input2']
svm = svm.SVC(kernel='linear')
svm.fit(X, Y)
feature_importances(svm.coef_, features_names)
Run Code Online (Sandbox Code Playgroud)

我如何能够计算非线性内核的特征重要性,这在给定的示例中没有给出预期的结果。

Jib*_*hew 1

简短的回答:这是不可能的,(至少目前的库无法做到这一点。)可以找出线性 SVM 的特征重要性,但不能找出非线性 SVM,原因是,当 SVM 是非线性的时数据集被映射到一个更高维度的空间,这与父数据集有很大不同,并且获得了超平面,并且这个高维数据和属性因此与父数据集的属性发生了变化,因此不可能找到该 SVM 相对于父数据集特征的特征重要性。