首页 > 解决方案 > sklearn 交叉有效/交叉预测

问题描述

我知道cross_val_predict / cross_val训练 n 个折叠模型,然后将它们聚合以产生最终预测。这是在训练阶段完成的。现在,我想使用拟合模型来预测测试数据。我可以使用 for 循环来收集对测试数据的预测并聚合它们,但首先我想问一下是否有内置的 sklearn 方法?

from sklearn.model_selection import cross_val_predict, train_test_split

diabetes = datasets.load_diabetes()
X = diabetes.data[:150]
y = diabetes.target[:150]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
lasso = linear_model.Lasso()
y_train_hat = cross_val_predict(lasso, X_train, y_train, cv=3)
y_test_hat = do_somthing(lasso, X_test)```

Thanks

标签: machine-learningscikit-learndata-science

解决方案


您的 3 个模型cross_val_predict未保存在任何地方,因此您无法使用它们进行预测。您可以使用cross_validate. return_estimator=True您仍然会留下三个模型,您必须手动使用它们来进行和汇总预测。(原则上,您可以将这些模型放入一个集成模型VotingClassifier中,但至少目前没有prefit理由阻止重新调整您的估算器。Issue 7382中有一些讨论和那里的链接。)


推荐阅读