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对象
- Xndray或DataFrame,形状(n_samples,n_features)
将计算排列重要性的数据。
- y类阵列或无、形状(n_samples,)或(n_samples,n_classes)
受监督或
None
对于无人监督。- scoring字符串、可调用、列表、tuple或dict,默认=无
要使用的记分器。如果
scoring
代表单个分数,可以用途:单个字符串(请参阅 的 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.0
或X.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
像上面这样的对象作为价值观。
- result :
引用
示例
>>> 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. ])