Scikit ROC auc raises ValueError: Only one class present in y_true. ROC AUC score is not defined in that case
Scikit ROC auc raises ValueError: Only one class present in y_true. ROC AUC score is not defined in that case
正在尝试创建 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 中只有一个 class。在这种情况下,ROC AUC 分数未定义。
最后回答了我自己的问题:
已将 y_test 作为 pandas DataFrame 而不是系列导入(已使用 to_csv 保存并使用 from_csv 导入其他地方)。
这在 ROC 曲线上混淆了 scikit,但它似乎对其他任何地方都很满意。
我会把它留在这里(不太可能)有人遇到同样的事情。
有时我们会遇到不平衡的数据集。
就像拆分时一样,有可能 类 中的任何一个都不存在任何数据集(测试数据集)
.所以最好在拆分时使用分层技术。
或者如果您在训练 MLP 模型时遇到问题,那么您可以尝试增加“batch_size”
希望对您有所帮助。
谢谢
正在尝试创建 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 中只有一个 class。在这种情况下,ROC AUC 分数未定义。
最后回答了我自己的问题:
已将 y_test 作为 pandas DataFrame 而不是系列导入(已使用 to_csv 保存并使用 from_csv 导入其他地方)。
这在 ROC 曲线上混淆了 scikit,但它似乎对其他任何地方都很满意。
我会把它留在这里(不太可能)有人遇到同样的事情。
有时我们会遇到不平衡的数据集。
就像拆分时一样,有可能 类 中的任何一个都不存在任何数据集(测试数据集) .所以最好在拆分时使用分层技术。
或者如果您在训练 MLP 模型时遇到问题,那么您可以尝试增加“batch_size”
希望对您有所帮助。 谢谢