【问题标题】:How to get the prediction results in cross validation in sklearn如何在sklearn中获得交叉验证的预测结果
【发布时间】:2020-04-08 11:11:27
【问题描述】:

我正在使用 sklearn 交叉验证来解决二进制分类问题。我的代码如下所示。

from sklearn import datasets
iris = datasets.load_iris()
X = iris.data[:, :2]  # we only take the first two features.
y = iris.target

from sklearn.ensemble import RandomForestClassifier
clf=RandomForestClassifier(random_state = 0, class_weight="balanced")

from sklearn.model_selection cross_val_score, cross_validate
cross_val_score(clf, X, y, cv=10, scoring = 'accuracy')

cross_val_score 只输出交叉验证中每个折叠的准确度。但是,我想获取我的分类器为X 中的每个数据点分配的类标签。

例如,我期望输出如下。

X, predicted_label
x1, 0
x2, 1
x3, 0
x4, 1
x5, 1
x6, 1
.........

我知道 sklearn 中有一个名为 predict_proba 的函数。但是,它只输出概率。在我的情况下,我想要预测的类标签。

如果需要,我很乐意提供更多详细信息。

【问题讨论】:

    标签: python scikit-learn


    【解决方案1】:

    你可以使用sklearn.model_selection.cross_val_predict (source)

    from sklearn import datasets, linear_model
    from sklearn.model_selection import cross_val_predict
    
    diabetes = datasets.load_diabetes()
    
    X = diabetes.data[:150]
    y = diabetes.target[:150]
    
    lasso = linear_model.Lasso()
    y_pred = cross_val_predict(lasso, X, y, cv=3)
    
    print(y_pred)
    
    [174.26933996 117.6539241  164.60228641 155.65049088 132.68647979
     128.49511245 120.76146877 141.069413   164.18904498 182.37394949]
    

    当然,它也适用于分类。

    【讨论】:

    • 感谢您的出色回答。只是想知道输出是否按 X 中数据点的顺序排列?期待您的来信:)
    • 我猜,否则整个事情就没有意义
    猜你喜欢
    • 2020-05-07
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    • 2015-09-22
    • 2018-05-07
    • 2019-11-09
    • 2017-04-13
    • 2012-12-31
    相关资源
    最近更新 更多