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')[来源]#
为每个输入数据点生成交叉验证估计。
数据根据 `cv` 参数进行分割。每个样本都恰好属于一个测试集,其预测通过在相应训练集上拟合的估计器计算得出。
将这些预测结果用于评估指标可能不是衡量泛化性能的有效方法。除非所有测试集大小相等且指标在样本上可分解,否则结果可能与
cross_validate
和cross_val_score
不同。更多信息请参阅用户指南。
- 参数:
- estimator估计器
用于拟合数据的估计器实例。它必须实现一个
fit
方法以及 `method` 参数指定的方法。- X{类似数组的,稀疏矩阵},形状为 (n_samples, n_features)
要拟合的数据。例如,可以是列表或至少二维的数组。
- y{类似数组的,稀疏矩阵},形状为 (n_samples,) 或 (n_samples, n_outputs),默认值=None
在监督学习中要尝试预测的目标变量。
- groups类似数组的,形状为 (n_samples,),默认值=None
在将数据集分割成训练/测试集时使用的样本分组标签。仅与“Group”交叉验证实例(例如,
GroupKFold
)结合使用。版本 1.4 中的更改: 仅当通过
sklearn.set_config(enable_metadata_routing=True)
未启用元数据路由时,才能传递groups
。当启用路由时,请改为通过params
参数传递groups
以及其他元数据。例如:cross_val_predict(..., params={'groups': groups})
。- cvint,交叉验证生成器或可迭代对象,默认值=None
确定交叉验证分割策略。`cv` 的可能输入包括:
None,使用默认的 5 折交叉验证,
int,指定
(Stratified)KFold
中的折叠数,生成(训练,测试)分割(作为索引数组)的可迭代对象。
对于 int/None 输入,如果估计器是分类器且 `y` 为二元或多类,则使用
StratifiedKFold
。在所有其他情况下,使用KFold
。这些分割器使用 `shuffle=False` 实例化,因此在不同调用中分割结果将相同。请参阅用户指南,了解此处可用的各种交叉验证策略。
版本 0.22 中的更改: `cv` 为 None 时的默认值从 3 折更改为 5 折。
- n_jobsint,默认值=None
要并行运行的作业数。估计器的训练和预测在交叉验证分割中并行进行。`None` 表示 1,除非在
joblib.parallel_backend
上下文中。`-1` 表示使用所有处理器。有关更多详细信息,请参阅术语表。- verboseint,默认值=0
详细程度。
- paramsdict,默认值=None
传递给底层估计器的 `fit` 方法和交叉验证分割器的参数。
版本 1.4 中新增。
- pre_dispatchint 或 str,默认值='2*n_jobs'
控制并行执行期间调度的作业数。减少此数量有助于避免在调度的作业多于 CPU 可处理的作业时出现内存消耗爆炸。此参数可以是:
None,在这种情况下,所有作业会立即创建并启动。将此用于轻量级和快速运行的作业,以避免因按需启动作业而造成的延迟。
一个 int 值,表示启动的总作业的确切数量。
一个 str 值,表示一个关于 `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
计算每个交叉验证分割的分数。
cross_validate
计算每个交叉验证分割的一个或多个分数和时间。
注意
如果训练部分中缺少一个或多个类别,并且 `method` 针对每个类别生成列(如在 {'decision_function', 'predict_proba', 'predict_log_proba'} 中),则需要为该类别的所有实例分配一个默认分数。对于 `predict_proba`,此值为 0。为了确保有限的输出,在其他情况下,我们用数据类型(dtype)的最小有限浮点值来近似负无穷大。
示例
>>> 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)