【发布时间】:2021-11-13 14:50:09
【问题描述】:
import matplotlib.pyplot as plt
import numpy as np
from sklearn.datasets import fetch_openml
from sklearn.ensemble import RandomForestClassifier
from sklearn.impute import SimpleImputer
from sklearn.inspection import permutation_importance
from sklearn.compose import ColumnTransformer
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import OneHotEncoder
result = permutation_importance(rf,
X_test,
y_test,
n_repeats=10,
random_state=42,
n_jobs=2)
sorted_idx = result.importances_mean.argsort()
fig, ax = plt.subplots()
ax.boxplot(result.importances[sorted_idx].T,
vert=False,
labels=X_test.columns[sorted_idx])
ax.set_title("Permutation Importances (test set)")
fig.tight_layout()
plt.show()
在上面的代码中,取自文档中的this example,有没有办法只绘制前 3 个特征而不是所有特征?
【问题讨论】:
-
这实际上与 scikit-learn 无关,并且有太多样板代码无法到达定义
rf、X_test和y_test的地步。即便如此,这里的任何代码都不重要,因为这个问题归结为“我如何从列表中获取最后一个n元素”,这是 here 的答案,可能还有很多其他地方。但是,因为有赏金,所以问题仍然悬而未决。
标签: python scikit-learn