在SVM模型中,如何从一个热向量输入中寻找特征重要性?

问题描述 投票:0回答:1

我正在一个热编码向量的列表上训练一个SVM,这些向量看起来是这样的(它实际上是形状(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个特征在预测方面有多重要?

python machine-learning scikit-learn svm
1个回答
1
投票

因为你使用的是线性模型,所以你可以直接用系数来获得特征导入。你可以通过构建一个数据框来绘制(将索引设置为属性,这样勾选标签也会被设置)。

pd.Series(abs(svc.coef_[0])).sort_values(ascending=False).head(10).plot.barh()
© www.soinside.com 2019 - 2024. All rights reserved.