【问题标题】:Scikit ROC auc raises ValueError: Only one class present in y_true. ROC AUC score is not defined in that caseScikit ROC auc 引发 ValueError:y_true 中仅存在一个类。在这种情况下没有定义 ROC AUC 分数
【发布时间】:2015-10-17 22:37:07
【问题描述】:

尝试创建 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 分数。

【问题讨论】:

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


    【解决方案1】:

    最后回答了我自己的问题:

    已将 y_test 作为 pandas DataFrame 而不是 Series 导入(使用 to_csv 保存并使用 from_csv 导入其他位置)。

    这个 ROC 曲线上令人困惑的 scikit,但它似乎对其他任何地方都非常满意。

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

      • 检查操作答案。这不是不平衡的
      猜你喜欢
      • 2019-11-10
      • 2020-02-23
      • 2020-11-27
      • 2017-10-25
      • 2020-10-01
      • 1970-01-01
      • 2019-06-09
      • 2019-09-02
      • 2020-03-12
      相关资源
      最近更新 更多