cross_val_predict#

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

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

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

将这些预测值传递给评估指标可能不是测量泛化性能的有效方法。结果可能与:func:cross_validate 和:func:cross_val_score 不同,除非所有测试集大小相同且指标在样本上分解。

更多信息请参阅:ref:用户指南 <cross_validation>

Parameters:
estimatorestimator

用于拟合数据的估计器实例。它必须实现 fit 方法和由 method 参数指定的方法。

X{array-like, sparse matrix} of shape (n_samples, n_features)

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

y{array-like, sparse matrix} of shape (n_samples,) or (n_samples, n_outputs), 默认=None

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

groupsarray-like of shape (n_samples,), 默认=None

在将数据集分割为训练/测试集时使用的样本组标签。仅在与“Group”cv 实例(例如:class:GroupKFold )一起使用时使用。

Changed in version 1.4: groups 只能在未通过 sklearn.set_config(enable_metadata_routing=True) 启用元数据路由时传递。启用路由时,通过 params 参数与其他元数据一起传递 groups 。例如: cross_val_predict(..., params={'groups': groups})

cvint, cross-validation generator或可迭代对象, 默认=None

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

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

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

  • CV splitter ,

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

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

请参阅:ref:用户指南 <cross_validation> 以了解可以在此使用的各种交叉验证策略。

Changed in version 0.22: cv 的默认值如果为None,从3折改为5折。

n_jobsint, 默认=None

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

verboseint, 默认=0

详细级别。

fit_paramsdict, 默认=None

传递给估计器fit方法的参数。

Deprecated since version 1.4: 此参数已弃用,将在版本1.6中移除。请使用 params 代替。

paramsdict, 默认=None

传递给基础估计器的 fit 和CV分割器的参数。

Added in version 1.4.

pre_dispatchint或str, 默认=’2*n_jobs’

控制并行执行期间分派的作业数。减少此数量对于避免在分派的作业多于CPU可以处理的作业时内存消耗爆炸是有用的。此参数可以是:

  • None,在这种情况下,所有作业立即创建并 spawned。对于轻量级和快速运行的作业,使用此选项以避免由于按需 spawning 作业而导致的延迟

  • 一个int,给出 spawned 的总作业的确切数量

  • 一个str,给出作为n_jobs函数的表达式,如’2*n_jobs’

method{‘predict’, ‘predict_proba’, ‘predict_log_proba’, ‘decision_function’}, 默认=’predict’

estimator 调用的方法。

Returns:
predictionsndarray

这是调用 method 的结果。形状:

  • method 是’predict’并且在特殊情况下 method 是’decision_function’且目标为二元时:(n_samples,)

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

  • 如果 estimator 是:term:multioutput ,则在每个形状的末尾添加额外维度’n_outputs’。

See also

cross_val_score

计算每个CV分割的分数。

cross_validate

计算每个CV分割的一个或多个分数和时间。

Notes

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

Examples

>>> 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)