Scikit ROC auc引发了ValueError:y_true中只有一个类。在这种情况下,没有定义ROC AUC分数

时间:2015-07-27 16:18:14

标签: pandas scikit-learn random-forest roc auc

尝试创建ROC曲线。

model = RandomForestClassifier(500, n_jobs = -1);
model.fit(X_train, y_train)
y_pred = model.predict(X_test)

probas = model.predict_proba(X_test)[:, 1]
precision = metrics.precision_score(y_test, y_pred)    # returns 0.72

recall = metrics.recall_score(y_test.values, y_pred)   # returns 0.35
y_test.shape                                           # (39257, 1)

auc = metrics.roc_auc_score(y_test, probas)            # fails.

ValueError:y_true中只有一个类。在这种情况下,没有定义ROC AUC分数。

2 个答案:

答案 0 :(得分:4)

结束回答我自己的问题:

导入y_test作为pandas DataFrame而不是Series(使用to_csv保存并使用from_csv导入其他地方)。

这对于ROC曲线的混淆scikit,但它似乎很满意其他地方。

我会留在这里(不太可能)有人遇到同样的事情。

答案 1 :(得分:0)

有时我们会遇到不平衡的数据集。

就像在分裂时一样,任何一个类都有可能不存在任何数据集(测试数据集) .所以分裂时最好使用分层技术。

或者如果您在训练 MLP 模型时遇到问题,那么您可以尝试增加“batch_size”

我希望,这可能会有所帮助。 谢谢