当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python sklearn permutation_importance用法及代码示例


本文简要介绍python语言中 sklearn.inspection.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]。

估计器必须是拟合估计器。 X 可以是用于训练估计器的数据集或 hold-out 集。特征的排列重要性计算如下。首先,通过评分定义的基线指标在 X 定义的(可能不同的)数据集上进行评估。接下来,对验证集中的特征列进行置换,并再次评估指标。排列重要性定义为基线度量与排列特征列的度量之间的差异。

在用户指南中阅读更多信息。

参数

estimator对象

已安装并与 scorer 兼容的估计器。

Xndarray 或 DataFrame,形状(n_samples,n_features)

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

y类似数组或无,形状 (n_samples, ) 或 (n_samples, n_classes)

受监督的目标或无监督的None

scoringstr,可调用,列表,元组或字典,默认=无

使用的记分员。如果scoring 表示单个分数,则可以使用:

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

  • 唯一字符串的列表或元组;
  • 一个可调用的返回一个字典,其中键是指标名称,值是指标分数;
  • 以度量名称作为键和可调用值的字典。

将多个分数传递给scoring 比为每个分数调用permutation_importance 更有效,因为它重用预测以避免冗余计算。

如果没有,则使用估计器的默认记分器。

n_repeats整数,默认=5

置换特征的次数。

n_jobsint 或无,默认=无

并行运行的作业数。计算是通过计算每列的排列分数并在列上并行化来完成的。 None 表示 1,除非在 joblib.parallel_backend 上下文中。 -1 表示使用所有处理器。有关详细信息,请参阅词汇表。

random_stateint,RandomState 实例,默认=无

伪随机数生成器,用于控制每个特征的排列。传递 int 以获得跨函数调用的可重现结果。请参阅词汇表。

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

评分中使用的样本权重。

max_samplesint 或浮点数,默认=1.0

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

  • 如果是 int,则绘制 max_samples 样本。
  • 如果浮点数,则绘制 max_samples * X.shape[0] 样本。
  • 如果 max_samples 等于 1.0X.shape[0] ,则将使用所有样本。

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

返回

result Bunch 或此类实例的字典

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

importances_meanndarray 形状 (n_features, )

n_repeats 上的特征重要性平均值。

importances_stdndarray 形状 (n_features, )

n_repeats 的标准偏差。

重要性ndarray 形状(n_features,n_repeats)

原始排列重要性分数。

如果评分参数中有多个评分指标 result 是一个以评分者名称作为键(例如 ‘roc_auc’)和 Bunch 对象作为值的字典。

参考

BRE

L. Breiman,“Random Forests”,机器学习,45(1),5-32,2001。https://doi.org/10.1023/A:1010933404324

例子

>>> 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.       ])

相关用法


注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.inspection.permutation_importance。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。