permutation_importance#

sklearn.inspection.permutation_importance(estimator, X, y, *, scoring=None, n_repeats=5, n_jobs=None, random_state=None, sample_weight=None, max_samples=1.0)[源代码]#

用于特征评估的排列重要性 [BRE].

estimator 必须是一个拟合估计量。 X 可以是用于训练估计器的数据集或保留集。特征的排列重要性计算如下。首先,基线指标,定义如下 scoring ,在由 X .接下来,排列验证集中的要素列并再次评估指标。排列重要性定义为基线指标和排列特征列的指标之间的差异。

阅读更多的 User Guide .

参数:
estimator对象

一个已经被 fitted 并兼容 scorer .

Xndray或DataFrame,形状(n_samples,n_features)

将计算排列重要性的数据。

y类阵列或无、形状(n_samples,)或(n_samples,n_classes)

受监督或 None 对于无人监督。

scoring字符串、可调用、列表、tuple或dict,默认=无

要使用的记分器。如果 scoring 代表单个分数,可以用途:

如果 scoring 代表多个分数,可以用途:

  • 唯一字符串的列表或多元组;

  • 返回字典的可调用对象,其中键是指标名称,值是指标分数;

  • 一个以指标名称作为键并调用值的字典。

将多个分数传递给 scoring 比打电话更有效 permutation_importance 对于每个分数,因为它重复使用预测来避免重复计算。

如果无,则使用估计器的默认评分器。

n_repeatsint,默认=5

置换功能的次数。

n_jobsint或无,默认=无

要并行运行的作业数。计算是通过计算每列的排列分数来完成的,并在列上并行化。 None 意思是1,除非在a中 joblib.parallel_backend 上下文 -1 意味着使用所有处理器。看到 Glossary 了解更多详细信息。

random_stateint,RandomState实例,默认=无

伪随机数发生器,控制每个特征的排列。传递一个int以在函数调用中获得可重复的结果。看到 Glossary .

sample_weight形状类似数组(n_samples,),默认=无

评分中使用的样本权重。

Added in version 0.24.

max_samplesint或float,默认值为1.0

从X提取以计算每次重复中的特征重要性的样本数(无需替换)。

  • 如果是int,那么画 max_samples 样品

  • 如果是浮动的,那就画画 max_samples * X.shape[0] 样品

  • 如果 max_samples 等于 1.0X.shape[0] ,将使用所有样本。

虽然使用此选项可能会提供不太准确的重要性估计,但在评估大型数据集的特征重要性时,它可以使该方法保持易于处理。结合 n_repeats ,这允许控制该方法的计算速度与统计准确性的权衡。

Added in version 1.0.

返回:
result : Bunch 或此类情况的法令大量或法令此类实例

类似字典的对象,具有以下属性。

importances_mean形状的nd数组(n_features,)

功能重要性的平均值超过 n_repeats .

importances_std形状的nd数组(n_features,)

标准差超过 n_repeats .

重要度形状的nd数组(n_features,n_repeats)

原始排列重要性分数。

如果评分参数中有多个评分指标 result 是一个以得分者姓名作为关键字的dict(例如“roc_aucu”),并且 Bunch 像上面这样的对象作为价值观。

引用

示例

>>> from sklearn.linear_model import LogisticRegression
>>> from sklearn.inspection import permutation_importance
>>> X = [[1, 9, 9],[1, 9, 9],[1, 9, 9],
...      [0, 9, 9],[0, 9, 9],[0, 9, 9]]
>>> y = [1, 1, 1, 0, 0, 0]
>>> clf = LogisticRegression().fit(X, y)
>>> result = permutation_importance(clf, X, y, n_repeats=10,
...                                 random_state=0)
>>> result.importances_mean
array([0.4666..., 0.       , 0.       ])
>>> result.importances_std
array([0.2211..., 0.       , 0.       ])