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
,可迭代产出(训练、测试)分裂为索引数组。
为
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