【问题标题】:How to use cross_val_predict to predict probabilities for a new dataset?如何使用 cross_val_predict 预测新数据集的概率?
【发布时间】:2018-05-20 21:17:59
【问题描述】:

我正在使用 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 中经过训练和交叉验证的模型应用于新数据?还是我用错了?

谢谢!

【问题讨论】:

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

标签: scikit-learn


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2019-06-16
      • 2020-09-04
      • 2017-05-24
      • 1970-01-01
      • 2018-09-05
      • 1970-01-01
      • 1970-01-01
      • 2016-05-23
      相关资源
      最近更新 更多