Roc_auc百分比计算给出nan



我试图为我的数据计算ROC评分,但结果是nan。

代码:

scoring = 'roc_auc'
kfold= KFold(n_splits=10, random_state=42, shuffle=True)
model = LinearDiscriminantAnalysis()
results = cross_val_score(model, df_n, y, cv=kfold, scoring=scoring)
print("AUC: %.3f (%.3f)" % (results.mean(), results.std()))

df_n是一个归一化值的数组,我也尝试了它只是从数据集的X数据值。Y是一个二进制数组。

df_n shape: (1,0,4)Y形:(150,)

我被难住了,它应该可以工作!

问题是roc_auc_score期望的是概率,而不是多类分类的预测。然而,使用该代码,分数将获得predict的输出。

使用一个新的记分器:

from sklearn.metrics import roc_auc_score, make_scorer
multi_roc_scorer = make_scorer(lambda y_in, y_p_in: roc_auc_score(y_in, y_p_in, multi_class='ovr'), needs_proba=True)
scores = cross_validate(model, X_s, y_s, scoring=multi_roc_scorer, cv=cv, error_score="raise")

最新更新