permutation_test_score#

sklearn.model_selection.permutation_test_score(estimator, X, y, *, groups=None, cv=None, n_permutations=100, n_jobs=None, random_state=0, verbose=0, scoring=None, fit_params=None, params=None)[源代码]#

评估交叉验证评分与排列的显著性。

Permutes的目标是生成“随机数据”,并根据特征和目标独立的零假设计算经验p值。

p值代表估计器表现与原始数据一样好或更好的随机数据集的比例。较小的p值表明特征和目标之间存在真正的依赖性,估计器已使用这一依赖性来给出良好的预测。较大的p值可能是由于特征和目标之间缺乏真正的依赖性,或者估计器无法使用依赖性来给出良好的预测。

阅读更多的 User Guide .

参数:
estimator实现“fit”的估计器对象

用于适应数据的对象。

X至少2D形状类似阵列

要适应的数据。

y形状的类似阵列(n_samples,)或(n_samples,n_outputs)或无

在监督学习的情况下尝试预测的目标变量。

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

限制组内排列的标签,即 y 值在具有相同组标识符的样本之间进行排列。当未指定时, y 值在所有样本中进行排列。

当使用分组交叉验证器时,组标签也会传递给 split 交叉验证器的方法。交叉验证器使用它们对样本进行分组,同时将数据集拆分为训练集/测试集。

在 1.6 版本发生变更: groups 只能在未通过启用元数据路由时传递 sklearn.set_config(enable_metadata_routing=True) .启用路由后,通过 groups 与其他元数据一起, params 相反,争论。例如: permutation_test_score(..., params={'groups': groups}) .

cvint,交叉验证生成器或可迭代对象,默认=无

确定交叉验证拆分策略。简历的可能输入包括:

  • None ,要使用默认的5重交叉验证,

  • int,指定中的折叠数 (Stratified)KFold ,

  • CV splitter ,

  • 可迭代产出(训练、测试)分裂为索引数组。

int /“无”输入,如果估计器是分类器并且 y 是二元或多类, StratifiedKFold 采用了在所有其他情况下, KFold 采用了这些拆分器实例化为 shuffle=False 因此不同呼叫之间的拆分将是相同的。

User Guide 这里可以使用的各种交叉验证策略。

在 0.22 版本发生变更: cv 默认值,如果 None 从3倍变成5倍。

n_permutationsint,默认=100

Number of times to permute y.

n_jobsint,默认=无

要并行运行的作业数。训练估计器和计算交叉验证分数在排列上并行进行。 None 意思是1,除非在a中 joblib.parallel_backend 上下文 -1 意味着使用所有处理器。看到 Glossary 了解更多详细信息。

random_stateint,RandomState实例或无,默认=0

传递一个int,用于可再现的输出,用于排列 y 样品之间的值。看到 Glossary .

verboseint,默认=0

冗长程度。

scoring字符串或可调用,默认=无

单个字符串(请参阅 的 scoring 参数:定义模型评估规则 )或可赎回债券(见 可召唤得分手 )评估测试集中的预测。

如果 None 使用估计器的评分方法。

fit_paramsdict,默认=无

要传递给估计器的匹配方法的参数。

自 1.6 版本弃用: 此参数已被弃用,并将在1.6版本中删除。使用 params 而不是.

paramsdict,默认=无

要传递给 fit 方法的估计,评分和CV分裂。

  • 如果 enable_metadata_routing=False (默认):参数直接传递给 fit 估计者的方法。

  • 如果 enable_metadata_routing=True :参数安全路由到 fit 估计器的方法, cv 对象和 scorer .看到 Metadata Routing User Guide 了解更多详细信息。

Added in version 1.6.

返回:
score浮子

没有排列目标的真实分数。

permutation_scores形状数组(n_permations,)

每个排列获得的分数。

pvalue浮子

p值,接近偶然获得分数的概率。计算公式如下:

(C + 1) / (n_permutations + 1)

其中C是分数>=真实分数的排列数。

最好的p值是1/(n_permations + 1),最差的是1.0。

注意到

此函数在以下位置实现测试1:

奥贾拉和加里加。 Permutation Tests for Studying Classifier Performance .机器学习研究杂志(2010)第11卷

示例

>>> from sklearn.datasets import make_classification
>>> from sklearn.linear_model import LogisticRegression
>>> from sklearn.model_selection import permutation_test_score
>>> X, y = make_classification(random_state=0)
>>> estimator = LogisticRegression()
>>> score, permutation_scores, pvalue = permutation_test_score(
...     estimator, X, y, random_state=0
... )
>>> print(f"Original Score: {score:.3f}")
Original Score: 0.810
>>> print(
...     f"Permutation Scores: {permutation_scores.mean():.3f} +/- "
...     f"{permutation_scores.std():.3f}"
... )
Permutation Scores: 0.505 +/- 0.057
>>> print(f"P-value: {pvalue:.3f}")
P-value: 0.010