分类,cross_val_score()返回一个数组1

时间:2020-09-08 20:09:37

标签: machine-learning scikit-learn classification

我有这个管道,其中X_trainy_train都是两个数组,具有相同的行数(所有整数和浮点数,y_train为二进制,值分别为1和0)。当我运行它时,一切似乎都进行得很顺利。这是代码:

from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.impute import KNNImputer
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score, KFold

seed = 7
kfold = KFold(n_splits=10)

pipe = Pipeline([
    ('Scaler', StandardScaler()),
    ("Imputer", KNNImputer()),
    ('ML', RandomForestClassifier(max_depth=3))])

results = cross_val_score(pipe, X_train, y_train, cv=kfold, scoring="roc_auc")

当我尝试打印结果时,它会给我以下信息:

print(results)
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])

它给出了10个值1的数组。

  • 为什么?
  • 我该如何分别访问那些模型?
  • 该如何选择最好的(假设它们具有不同的值)?

1 个答案:

答案 0 :(得分:0)

这在cross_val_score函数的文档中进行了解释。

在您的示例中,您可以通过选择scoring参数获得每个折叠的ROC AUC

我想您的模型严重拟合了数据,这就是AUC始终为1.0,即最大值