Scikit learn 如何使用cross_val_predict来预测新数据集的概率?

Scikit learn 如何使用cross_val_predict来预测新数据集的概率?,scikit-learn,Scikit Learn,我使用sklearn的cross_val_predict进行如下训练: myprobs_train = cross_val_predict(LogisticRegression(),X = x_old, y=y_old, method='predict_proba', cv=10) 我对返回的概率很满意,现在想为一个全新的数据集打分。我试过: myprobs_test = cross_val_predict(LogisticRegression(), X =x_new, y= None

我使用sklearn的cross_val_predict进行如下训练:

  myprobs_train = cross_val_predict(LogisticRegression(),X = x_old, y=y_old, method='predict_proba', cv=10)
我对返回的概率很满意,现在想为一个全新的数据集打分。我试过:

  myprobs_test = cross_val_predict(LogisticRegression(), X =x_new, y= None, method='predict_proba',cv=10)
但这不起作用,它抱怨y的形状为零。这是否意味着无法将cross_val_predict中经过训练和交叉验证的模型应用于新数据?还是我用错了


谢谢大家!

您正在使用错误的方法。交叉验证方法不会返回经过训练的模型;它们返回评估模型性能的值(在您的案例中为逻辑回归)。您的目标是拟合一些数据,然后为新数据生成预测。相关的方法是和的。以下是基本结构:

logreg = linear_model.LogisticRegression()
logreg.fit(x_old, y_old)
predictions = logreg.predict(x_new)

我和@user3490622有同样的担忧。如果我们只能在训练集和测试集上使用cross_val_predict,为什么y(target)是None作为默认值?()


为了部分实现多重预测概率的预期结果,可以重复使用拟合-预测方法来模拟交叉验证

是的,它出错并不奇怪,因为在第二次运行中没有包含任何y值。你想做一些样本外的预测吗?cross_val_predict可能不是最好的,因为它不允许您分两步进行拟合和预测