分类,cross_val_score() returns 1的数组

Classification, cross_val_score() returns an array of 1

我有这个管道,其中 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 的数组。

这在 cross_val_score 函数的文档中有解释。

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

我猜你的模型严重过度拟合数据,这就是 AUC 始终为 1.0,即最大值