如何在sklearn中进行交叉验证时获得预测结果

时间:2019-12-15 23:30:35

标签: python scikit-learn

我将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的函数。但是,它仅输出概率。在我的情况下,我需要预测的班级标签。

很高兴在需要时提供更多详细信息。

1 个答案:

答案 0 :(得分:1)

您可以只使用sklearn.model_selection.cross_val_predictsource

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]

它当然也适用于分类。