我正在使用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)
但这不起作用,它抱怨你的形状为零。这是否意味着无法将cross_val_predict中经过训练和交叉验证的模型应用于新数据?或者我只是错误地使用它?
谢谢!
答案 0 :(得分:3)
你正在寻找一种错误的方法。交叉验证方法不会返回训练有素的模型;它们返回评估模型性能的值(在您的情况下为逻辑回归)。您的目标是拟合一些数据,然后生成新数据的预测。相关方法是fit的predict和LogisticRegression class。这是基本结构:
logreg = linear_model.LogisticRegression()
logreg.fit(x_old, y_old)
predictions = logreg.predict(x_new)
答案 1 :(得分:0)
我和@ user3490622有同样的担忧。如果我们只能在训练和测试集上使用cross_val_predict,为什么y(目标)是None作为默认值? (sklearn page)
为了部分地实现多个预测概率的期望结果,可以重复使用拟合然后预测方法来模拟交叉验证。