Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从SVM模型中的一个热向量输入中找到特征重要性_Python_Machine Learning_Scikit Learn_Svm - Fatal编程技术网

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

Python 如何从SVM模型中的一个热向量输入中找到特征重要性,python,machine-learning,scikit-learn,svm,Python,Machine Learning,Scikit Learn,Svm,我在一个热编码向量的列表上训练一个SVM,看起来像这样(它的实际形状(17942621),但出于示例的目的,让我们假设它如下所示): 标签如下所示: 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_t

我在一个热编码向量的列表上训练一个SVM,看起来像这样(它的实际形状(17942621),但出于示例的目的,让我们假设它如下所示):

标签如下所示:

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个特征在预测方面有多重要

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


记住,为了使用
coef
attribute,您需要设置
penal='l1'
(线性内核)我认为
LinearSVC
默认为@lalfabc。文档中说
penal:str,'l1'或'l2'(默认为'l2')
内核在任何情况下都是线性的,正如其名称所示。看起来可以从两个惩罚设置中访问系数@lalfabIt是真的,我的错误是想得到一个稀疏解。
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)
pd.Series(abs(svc.coef_[0])).sort_values(ascending=False).head(10).plot.barh()