如何从 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()
我正在一个热编码向量列表上训练一个支持向量机,它看起来像这样(它的实际形状是 (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()