【问题标题】:Get predicted values using cross_validate()使用 cross_validate() 获取预测值
【发布时间】:2019-01-14 21:31:09
【问题描述】:

我有以下代码执行 5 折交叉验证并返回多个指标值。

iris = load_iris()
clf = SVC()
scoring = {'acc': 'accuracy',
           'prec_macro': 'precision_macro',
           'rec_micro': 'recall_macro'}
scores = cross_validate(clf, iris.data, iris.target, scoring=scoring,
                         cv=5, return_train_score=True)

我想知道这是否可以修改为打印每个折叠的预测值。

【问题讨论】:

  • 你使用的是哪个库?
  • 我正在使用 sklearn

标签: machine-learning scikit-learn prediction cross-validation


【解决方案1】:

如果你使用的是 sklearn,你可以使用cross_val_predict:

from sklearn.model_selection import cross_val_predict
y_train_pred = cross_val_predict(clf_name,X_train,y_train_5,cv=3)

cross_val_score 给出每个折叠的分数。而cross_val_predict 给出每个折叠的预测。

【讨论】:

  • 是的,我正在使用 sklearn。我知道 cross_val_predict 返回预测值。我想获得指标值和预测值。是否可以使用单个函数同时获得两者。
  • 我怀疑它会。cross_val_print 没有评分参数。所以不幸的是,我猜你必须同时使用它们一次。
【解决方案2】:

因为我在 scikit-learn 中也需要这个功能,所以我已经破解了我的 sklearn 存储库中的代码。 如果你还需要这个,你可以在我的 github 上的 group_cv 分支上找到这个:

https://github.com/robbisg/scikit-learn/tree/group_cv

修改后的cross_validate函数在这里: https://github.com/robbisg/scikit-learn/blob/group_cv/sklearn/model_selection/_validation.py

你需要用return_predictions=True打电话给cross_validate

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    • 2019-06-16
    • 2016-06-21
    • 2013-04-30
    • 1970-01-01
    • 2018-06-25
    • 2019-11-28
    相关资源
    最近更新 更多