如何在任何分类器 Sklearn 中获得最有贡献的功能,例如 DecisionTreeClassifier knn 等
How to get the most contributing feature in any classifier Sklearn for example DecisionTreeClassifier knn etc
我已经使用 KNN 分类器在数据集上尝试了我的模型,我想知道哪个是模型中贡献最大的特征,以及预测中贡献最大的特征。
要定性地了解哪个特征对分类的影响更大,您可以一次使用一个特征执行 n_feats
分类(n_feats
代表特征向量维度),如下所示:
import numpy as np
from sklearn import datasets
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import cross_val_score
iris = datasets.load_iris()
clf = KNeighborsClassifier()
y = iris.target
n_feats = iris.data.shape[1]
print('Feature Accuracy')
for i in range(n_feats):
X = iris.data[:, i].reshape(-1, 1)
scores = cross_val_score(clf, X, y, cv=3)
print(f'{i} {scores.mean():g}')
输出:
Feature Accuracy
0 0.692402
1 0.518382
2 0.95384
3 0.95384
这些结果表明分类主要由特征 2 和 3 决定。
您可以采用另一种方法,将上面代码中的 X = iris.data[:, i].reshape(-1, 1)
替换为:
X_head = np.atleast_2d(iris.data[:, 0:i])
X_tail = np.atleast_2d(iris.data[:, i+1:])
X = np.hstack((X_head, X_tail))
在这种情况下,您还要执行 n_samples
分类。不同之处在于,第 i-th 分类中使用的特征向量由除第 i-th.[=18 之外的所有特征组成=]
样本运行:
Feature Accuracy
0 0.973856
1 0.96732
2 0.946895
3 0.959967
从这些结果中可以清楚地看出,当您去除第三个特征(索引 2 的特征)时,分类器的准确率最差,这与通过第一种方法获得的结果一致。
我已经使用 KNN 分类器在数据集上尝试了我的模型,我想知道哪个是模型中贡献最大的特征,以及预测中贡献最大的特征。
要定性地了解哪个特征对分类的影响更大,您可以一次使用一个特征执行 n_feats
分类(n_feats
代表特征向量维度),如下所示:
import numpy as np
from sklearn import datasets
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import cross_val_score
iris = datasets.load_iris()
clf = KNeighborsClassifier()
y = iris.target
n_feats = iris.data.shape[1]
print('Feature Accuracy')
for i in range(n_feats):
X = iris.data[:, i].reshape(-1, 1)
scores = cross_val_score(clf, X, y, cv=3)
print(f'{i} {scores.mean():g}')
输出:
Feature Accuracy
0 0.692402
1 0.518382
2 0.95384
3 0.95384
这些结果表明分类主要由特征 2 和 3 决定。
您可以采用另一种方法,将上面代码中的 X = iris.data[:, i].reshape(-1, 1)
替换为:
X_head = np.atleast_2d(iris.data[:, 0:i])
X_tail = np.atleast_2d(iris.data[:, i+1:])
X = np.hstack((X_head, X_tail))
在这种情况下,您还要执行 n_samples
分类。不同之处在于,第 i-th 分类中使用的特征向量由除第 i-th.[=18 之外的所有特征组成=]
样本运行:
Feature Accuracy
0 0.973856
1 0.96732
2 0.946895
3 0.959967
从这些结果中可以清楚地看出,当您去除第三个特征(索引 2 的特征)时,分类器的准确率最差,这与通过第一种方法获得的结果一致。