sklearn.model_selection.cross_validate

sklearn.model_selection.cross_validate(estimator, X, y=None, *, groups=None, scoring=None, cv=None, n_jobs=None, verbose=0, fit_params=None, pre_dispatch='2*n_jobs', return_train_score=False, return_estimator=False, error_score=nan)

[源码]

通过交叉验证和记录拟合(或准确率)的时间评估指标。

用户指南中阅读更多内容。

参数 说明
estimator estimator object implementing ‘fit’
用于拟合数据的对象。
X array-like of shape (n_samples, n_features)
用于拟合的数据。例如可以是列表或数组
y array-like of shape (n_samples,) or (n_samples, n_outputs), default=None
在监督学习的情况下要尝试预测的目标变量。
groups array-like of shape (n_samples,), default=None
将数据集切分为训练集或测试集时使用的样本的分组标签。仅与“ Group” cv 实例(例如GroupKFold)结合使用。
scoring str, callable, list/tuple, or dict, default=None
单个str(请参阅评分参数:定义模型评估规则)或可调用项(请参阅从度量函数定义评分策略)用于评估测试集上的预测。

要评估多个指标,请给出(唯一的)字符串列表或以名称为键,可调用项为值的字典。

注意,使用自定义评分器时,每个评分器应返回一个值。返回值列表或数组的度量函数可以包装到多个评分器中,每个评分器都返回一个值。

有关示例,请参阅指定多个度量进行评估

如果为None,则使用估计器的评分方法。
cv int, cross-validation generator or an iterable, default=None
确定交叉验证切分策略。cv可输入:

- None,使用默认的5折交叉验证
- int,用于指定(Stratified)KFold的折数
- CV splitter,
- 可迭代输出切分的(训练集,测试集)作为索引的数组

对于int / None输入,如果估计器是分类器,并且y是二分类或多分类,则使用StratifiedKFold。在所有其他情况下,均使用KFold

有关可在此处使用的各种交叉验证策略,请参阅用户指南

在版本0.22中更改:cv为“None”时,默认值从3折更改为5折。
n_jobs int, default=None
用于进行计算的CPU数量。 None除非在joblib.parallel_backend环境中,否则表示1 。 -1表示使用所有处理器。有关更多详细信息,请参见词汇表
verbose int, default=0
详细程度。
fit_params dict, default=None
传递给估计器的fit方法的参数。
pre_dispatch int or str, default=’2*n_jobs’
控制在并行执行期间分派的CPU内核数。当调度的内核数量超过CPU的处理能力时,减少此数量可能有助于避免内存消耗激增。该参数可以是:

-None,在这种情况下,将立即创建并派生所有CPU内核。将此用于轻量级和快速运行的CPU内核,以避免由于按需生成CPU内核而造成的延迟
return_train_score bool, default=False
是否包括训练集准确率。计算训练集准确率用于了解不同的参数设置如何影响过拟合和欠拟合之间的权衡。但是,在训练集上计算准确率可能在计算上消耗很大,并且不严格要求选择产生最优泛化性能的参数。

版本0.19中的新功能。

在版本0.21中:默认值从True更改为False
return_estimator bool, default=False
是否返回每个切分中拟合的估计器。

0.20版中的新功能。
error_score ‘raise’ or numeric
如果估计器拟合出现错误时,分配给准确率的值。如果设置为“ raise”,则会引发错误。如果给出数值,则引发FitFailedWarning。此参数不会影响重新拟合步骤,这将总是引发错误。

0.20版中的新功能。
返回值 说明
scores dict of float arrays of shape (n_splits,)
每次交叉验证运行时的估计器准确率数组。

返回包含每个评分器的得分或次数数组的字典。这个dict字典的键可能是:

- test_score
每个交叉验证切分上测试集的准确率数组。如果评分参数中有多个评分指标,在test_score特定指标中(例如test_r2test_auc)添加后缀_score

- train_score
每个交叉验证切分上训练集的准确率数组。如果评分参数中有多个评分指标,在train_score特定指标中(例如train_r2train_auc)添加后缀_score。仅当return_train_scoreparameter为True时才可用。

- fit_time
将估计器拟合到每个交叉验证切分的训练集集合上的时间。

- score_time
在每个交叉验证切分的测试集上对估计器评分的次数。(请注意,即使return_train_score设置为True,也不包括训练集上的评分次数)

- estimator
每个交叉验证切分的估计器对象。仅当return_estimator参数设置为True时才可用。

另见:

sklearn.model_selection.cross_val_score 对单个指标评估进行交叉验证。

sklearn.model_selection.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.331507340.080223110.03531764])

多指标评估使用cross_validatescoring更多信息,请参考参数文档)

>>> 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.28010158 0.39088426 0.22784852]

sklearn.model_selection.cross_validate使用示例