【问题标题】:Getting ROC curve with one point得到一点ROC曲线
【发布时间】:2021-07-30 10:29:26
【问题描述】:

我正在尝试为 XGB 模型输出构建 ROC 曲线。 我得到的 tpr 和 fpr 数组只有 3 个值,最终只输出一个点的 ROC 曲线:

X = data_db.copy().drop(columns=['Y'])
y = data_db.copy()['Y'] 
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=20)
# XGBoost model 
model = XGBClassifier()
model.fit(X_train, y_train)

# make predictions for test data
y_predict = model.predict(X_test)

fpr, tpr, thresholds =roc_curve(y_test,y_predict)
tpr

输出是:

array([0.        , 0.98551517, 1.        ])

ROC 曲线看起来像

为什么我没有得到超过一个点的 ROC 曲线?

【问题讨论】:

  • 你的数据是什么形状,即X_test的长度是多少?
  • 7350 行 × 1886 列

标签: python scikit-learn xgboost roc


【解决方案1】:

对于我的 ROC 曲线,我使用 Yellowbrick。你可以试试这样的:

from yellowbrick.classifier import ROCAUC

X = data_db.copy().drop(columns=['Y'])
y = data_db.copy()['Y'] 
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=20)

# XGBoost model 
model = XGBClassifier()
model.fit(X_train, y_train)

# make predictions for test data
y_predict = model.predict(X_test)

# create the visualizer and fit training data
visualizer = ROCAUC(model, classes=["Y"])
visualizer.fit(X_train, y_train)

# add the score to the visualizer using test data
visualizer.score(X_test, y_test)

# display ROC curve    
visualizer.show() 

请注意,如果您正在处理多分类模型,classes = [] 可用于命名多个类。

【讨论】:

  • 另外值得注意的是,您不需要在classes = [] 中使用实际的列名。您可以将 Y 更改为您希望出现在图例上的任何值。
猜你喜欢
  • 2019-06-21
  • 2015-04-27
  • 2018-01-03
  • 2019-12-26
  • 1970-01-01
  • 2019-02-27
  • 2020-10-01
  • 2018-01-04
  • 2014-07-20
相关资源
最近更新 更多