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_r2 或test_auc )添加后缀_score 。- train_score 每个交叉验证切分上训练集的准确率数组。如果评分参数中有多个评分指标,在 train_score 特定指标中(例如train_r2 或train_auc )添加后缀_score 。仅当return_train_score parameter为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.33150734, 0.08022311, 0.03531764])
多指标评估使用cross_validate
(scoring
更多信息,请参考参数文档)
>>> 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]