交叉验证预测#
(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_validate
和cross_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
中的折叠数,生成 (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)