我有一个数据集,我想在这个数据集上训练我的模型。训练后,我需要知道哪些特征在SVM分类器的分类中起主要作用。
对于森林算法,有一种称为特征重要性的方法,有没有类似的方法呢?
回答:
是的,SVM分类器有一个属性coef_
,但它只适用于线性核的SVM。对于其他核,这是不可能的,因为数据通过核方法被转换到另一个空间,这个空间与输入空间无关,请查看解释。
from matplotlib import pyplot as pltfrom sklearn import svmdef f_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)f_importances(svm.coef_, features_names)