我将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
的函数。但是,它仅输出概率。在我的情况下,我需要预测的班级标签。
很高兴在需要时提供更多详细信息。
答案 0 :(得分: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]
它当然也适用于分类。