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,默认=无

评估测试集中交叉验证模型性能的策略。如果 Nonedefault evaluation criterion 使用估计器的。

如果 scoring 代表单个分数,可以用途:

如果 scoring 代表多个分数,可以用途:

  • 唯一字符串的列表或多元组;

  • 返回字典的可调用对象,其中键是指标名称,值是指标分数;

  • 一个以指标名称作为键并调用值的字典。

看到 指定多个指标进行评估 举个例子。

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

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

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

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

  • CV splitter ,

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

对于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 版本发生变更: 默认值已从 TrueFalse

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

每个简历分割的测试成绩的分数数组。后缀 _scoretest_score 更改特定指标,例如 test_r2test_auc 如果在评分参数中存在多个评分度量。

train_score

每个简历分割上的训练分数的分数数组。后缀 _scoretrain_score 更改特定指标,例如 train_r2train_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]