如何从 SVM 模型中的一个热向量输入中找到特征重要性

How to find feature importance from one hot vector input in an SVM model

我正在一个热编码向量列表上训练一个支持向量机,它看起来像这样(它的实际形状是 (179, 42621),但为了举例,我们假设它如下所示):

vectors = 
[
[0,0,0,1],
[1,0,0,1],
[0,0,0,1],
[0,0,0,1],
[0,0,0,1]
]

标签看起来像这样:

labels = 
[
[0],
[1],
[1],
[2],
[0]
]

我已经使用以下代码训练了 SVM:

X = vectors
y = labels

# fixing class imbalance
sm = SMOTE(random_state=42)
X, y = sm.fit_resample(X, y)

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

svc = LinearSVC()
svc.fit(X_train, y_train)
y_pred = svc.predict(X_test)

我是否可以了解每个特征在特征输入向量中的预测能力有多重要?

换句话说,我如何判断特征向量中的第0、1、2、3个特征在预测方面有多重要?

由于您使用的是线性模型,因此您可以直接使用系数来获取特征重要性。您可以通过构建数据框来绘制(将索引设置为属性,以便也设置刻度标签):

pd.Series(abs(svc.coef_[0])).sort_values(ascending=False).head(10).plot.barh()