交叉验证预测#

(cross_val_predict#)

sklearn.model_selection.cross_val_predict(estimator, X, y=None, *, groups=None, cv=None, n_jobs=None, verbose=0, params=None, pre_dispatch='2*n_jobs', method='predict')[source]#

为每个输入数据点生成交叉验证估计。

数据根据cv参数进行分割。每个样本都属于一个测试集,其预测值是用在相应训练集上拟合的估计器计算的。

将这些预测值传递到评估指标中可能不是衡量泛化性能的有效方法。除非所有测试集的大小相同且指标在样本上分解,否则结果可能与cross_validatecross_val_score不同。

用户指南中了解更多信息。

参数:
estimator估计器

用于拟合数据的估计器实例。它必须实现一个fit方法和method参数给出的方法。

X形状为 (n_samples, n_features) 的 {数组型、稀疏矩阵}

要拟合的数据。例如,可以是列表或至少二维的数组。

y形状为 (n_samples,) 或 (n_samples, n_outputs) 的 {数组型、稀疏矩阵},默认为 None

在监督学习的情况下,尝试预测的目标变量。

groups形状为 (n_samples,) 的数组型,默认为 None

将数据集分割成训练集/测试集时使用的样本分组标签。仅与“组” cv 实例(例如,GroupKFold)结合使用。

1.4 版中的更改: 仅当未通过 sklearn.set_config(enable_metadata_routing=True)启用元数据路由时,才能传递 groups。启用路由时,请通过 params 参数与其他元数据一起传递 groups。例如:cross_val_predict(..., params={'groups': groups})

cv整数、交叉验证生成器或可迭代对象,默认为 None

确定交叉验证分割策略。cv 的可能输入为

  • None,使用默认的 5 折交叉验证,

  • 整数,用于指定 (Stratified)KFold 中的折叠数,

  • CV 分割器,

  • 生成 (train, test) 分割作为索引数组的可迭代对象。

对于 int/None 输入,如果估计器是分类器且 y 是二元或多类,则使用 StratifiedKFold。在所有其他情况下,使用 KFold。这些分割器使用 shuffle=False 实例化,因此分割在调用之间将保持不变。

请参考 用户指南,了解此处可使用的各种交叉验证策略。

0.22 版中的更改: 如果为 None,则 cv 的默认值从 3 折更改为 5 折。

n_jobs整数,默认为 None

并行运行的作业数。估计器的训练和预测在交叉验证分割上并行化。None 表示 1,除非在 joblib.parallel_backend 上下文中。-1 表示使用所有处理器。有关更多详细信息,请参见 词汇表

verbose整数,默认为 0

详细程度。

params字典,默认为 None

传递给底层估计器的 fit 和 CV 分割器的参数。

1.4 版中添加。

pre_dispatch整数或字符串,默认为 '2*n_jobs'

控制在并行执行期间分派的作业数量。减少此数量可以有效避免在分派的作业数超过 CPU 可处理的作业数时内存消耗激增。此参数可以是

  • None,在这种情况下,所有作业都会立即创建和生成。对于轻量级和快速运行的作业,请使用此方法,以避免由于按需生成作业而导致的延迟

  • 整数,给出生成的总作业的确切数量

  • 字符串,给出作为 n_jobs 函数的表达式,如 '2*n_jobs'

method{'predict', 'predict_proba', 'predict_log_proba', 'decision_function'},默认为 'predict'

要由 estimator 调用的方法。

返回:
predictionsndarray

这是调用 method 的结果。形状

  • method 为 'predict' 且在 method 为 'decision_function' 且目标为二元的特殊情况下:(n_samples,)

  • method 为 {'predict_proba', 'predict_log_proba', 'decision_function'} 之一(除非上述特殊情况)时:(n_samples, n_classes)

  • 如果estimator多输出的,则会在上述每个形状的末尾添加一个额外的维度“n_outputs”。

另请参阅

cross_val_score

计算每个CV拆分的得分。

cross_validate

计算每个CV拆分的一个或多个得分和时间。

备注

如果训练部分中缺失一个或多个类别,并且method产生每个类别的列(如{‘decision_function’, ‘predict_proba’, ‘predict_log_proba’}),则需要为该类别所有实例分配默认得分。对于predict_proba,此值为0。为了确保输出有限,在其他情况下,我们将负无穷大近似为该数据类型下的最小有限浮点值。

示例

>>> from sklearn import datasets, linear_model
>>> from sklearn.model_selection import cross_val_predict
>>> diabetes = datasets.load_diabetes()
>>> X = diabetes.data[:150]
>>> y = diabetes.target[:150]
>>> lasso = linear_model.Lasso()
>>> y_pred = cross_val_predict(lasso, X, y, cv=3)