cross_validate#
- sklearn.model_selection.cross_validate(estimator, X, y=None, *, groups=None, scoring=None, cv=None, n_jobs=None, verbose=0, params=None, pre_dispatch='2*n_jobs', return_train_score=False, return_estimator=False, return_indices=False, error_score=nan)[源代码]#
通过交叉验证评估指标,并记录适合/评分时间。
阅读更多的 User Guide .
- 参数:
- estimator实现“fit”的估计器对象
用于适应数据的对象。
- X形状(n_samples,n_features)的{类数组,稀疏矩阵}
要适应的数据。例如,可以是列表或数组。
- y形状(n_samples,)或(n_samples,n_outputs)的类似数组,默认=无
在监督学习的情况下尝试预测的目标变量。
- groups形状类似数组(n_samples,),默认=无
Group labels for the samples used while splitting the dataset into train/test set. Only used in conjunction with a "Group" cv instance (e.g.,
GroupKFold
).在 1.4 版本发生变更:
groups
只能在未通过启用元数据路由时传递sklearn.set_config(enable_metadata_routing=True)
.启用路由后,通过groups
与其他元数据一起,params
相反,争论。例如:cross_validate(..., params={'groups': groups})
.- scoring字符串、可调用、列表、tuple或dict,默认=无
评估测试集中交叉验证模型性能的策略。如果
None
, default evaluation criterion 使用估计器的。如果
scoring
代表单个分数,可以用途:单个字符串(请参阅 的 scoring 参数:定义模型评估规则 );
可调用(参见 可召唤得分手 )返回单个值。
如果
scoring
代表多个分数,可以用途:唯一字符串的列表或多元组;
返回字典的可调用对象,其中键是指标名称,值是指标分数;
一个以指标名称作为键并调用值的字典。
看到 指定多个指标进行评估 举个例子。
- cvint,交叉验证生成器或可迭代对象,默认=无
确定交叉验证拆分策略。简历的可能输入包括:
无,要使用默认的5重交叉验证,
int,指定中的折叠数
(Stratified)KFold
,可迭代产出(训练、测试)分裂为索引数组。
对于int/No输入,如果估计器是分类器并且
y
是二元或多类,StratifiedKFold
采用了在所有其他情况下,KFold
采用了这些拆分器实例化为shuffle=False
因此不同呼叫之间的拆分将是相同的。指 User Guide 这里可以使用的各种交叉验证策略。
在 0.22 版本发生变更:
cv
如果无从3倍更改为5倍,则默认值。- n_jobsint,默认=无
要并行运行的作业数。训练估计器和计算分数在交叉验证拆分上并行进行。
None
意思是1,除非在a中joblib.parallel_backend
上下文-1
意味着使用所有处理器。看到 Glossary 了解更多详细信息。- verboseint,默认=0
冗长程度。
- paramsdict,默认=无
传递给基础估计器的参数
fit
、记分员和简历分配器。Added in version 1.4.
- pre_dispatchint或url,默认=' 2 *n_jobs '
控制并行执行期间调度的作业数量。减少此数量对于避免当调度的作业数量超过中央处理能力时内存消耗的爆炸式增长非常有用。此参数可以是:
int,给出产生的工作总数的确切数量
一个字符串,给出作为n_jobs函数的一个表达,如“2*n_jobs”中
- return_train_score布尔,默认=假
是否包括火车分数。计算训练分数用于深入了解不同的参数设置如何影响过适应/欠适应权衡。然而,计算训练集中的分数可能在计算上很昂贵,并且并不严格要求选择产生最佳概括性能的参数。
Added in version 0.19.
在 0.21 版本发生变更: 默认值已从
True
到False
- return_estimator布尔,默认=假
是否返回适合每个拆分的估计器。
Added in version 0.20.
- return_indices布尔,默认=假
是否返回为每次拆分选择的训练测试指数。
Added in version 1.3.
- error_score“raise”或数字,默认=NP.nan
如果估计量匹配中出现错误,则指定给分数的值。如果设置为“raise”,则会引发错误。如果给出了数字值,则会引发FitUtiledWarning。
Added in version 0.20.
- 返回:
- scores形状的浮点数组的分类(n_splits,)
每次交叉验证运行的估计量得分数组。
返回包含每个得分者的得分/时间数组的数组分类。可能的关键
dict
是:test_score
每个简历分割的测试成绩的分数数组。后缀
_score
在test_score
更改特定指标,例如test_r2
或test_auc
如果在评分参数中存在多个评分度量。train_score
每个简历分割上的训练分数的分数数组。后缀
_score
在train_score
更改特定指标,例如train_r2
或train_auc
如果在评分参数中存在多个评分度量。只有在以下情况下才可用return_train_score
参数是True
.fit_time
在每个cv拆分的火车集上匹配估计器的时间。
score_time
为每个简历拆分的测试集中对估计器进行评分的时间。(Note即使
return_train_score
设置为True
estimator
估计器针对每个简历拆分提出异议。只有在以下情况下才可用
return_estimator
参数设置为True
.indices
每个cv分割的训练/测试位置索引。返回一个字典,其中键是
"train"
或"test"
关联的值是具有索引的整类型NumPy数组的列表。仅在以下情况下可用return_indices=True
.
参见
cross_val_score
对单一指标评估运行交叉验证。
cross_val_predict
从交叉验证的每个分割中获取预测以用于诊断目的。
sklearn.metrics.make_scorer
根据性能指标或损失函数制作评分器。
示例
>>> from sklearn import datasets, linear_model >>> from sklearn.model_selection import cross_validate >>> from sklearn.metrics import make_scorer >>> from sklearn.metrics import confusion_matrix >>> from sklearn.svm import LinearSVC >>> diabetes = datasets.load_diabetes() >>> X = diabetes.data[:150] >>> y = diabetes.target[:150] >>> lasso = linear_model.Lasso()
使用单一指标评估
cross_validate
>>> cv_results = cross_validate(lasso, X, y, cv=3) >>> sorted(cv_results.keys()) ['fit_time', 'score_time', 'test_score'] >>> cv_results['test_score'] array([0.3315057 , 0.08022103, 0.03531816])
使用多指标评估
cross_validate
(请参阅scoring
参数doc获取更多信息)>>> scores = cross_validate(lasso, X, y, cv=3, ... scoring=('r2', 'neg_mean_squared_error'), ... return_train_score=True) >>> print(scores['test_neg_mean_squared_error']) [-3635.5... -3573.3... -6114.7...] >>> print(scores['train_r2']) [0.28009951 0.3908844 0.22784907]