【问题标题】:Different AUC score from xgb and sklearn.metrics来自 xgb 和 sklearn.metrics 的不同 AUC 分数
【发布时间】:2017-07-16 08:22:08
【问题描述】:

我将 xgboost 的 sklearn 包装器用于二进制分类任务,然后使用 sklearn.metrics 的 auc 进行评分

df = preprocessing.MinMaxScaler().fit_transform(df)
X_train, X_test, y_train, y_test = train_test_split(df, y, test_size=0.33)#, random_state=7)

params={
    'n_estimators':500,
    'objective': 'binary:logistic',
    'learning_rate': 0.05,
    'gamma':0.1,
    'subsample':0.8,
    'colsample_bytree':0.3,
    'min_child_weight':3,
    'max_depth':6,
    'seed':1024,
    }

clf = XGBClassifier(**params)
clf.fit(X_train, y_train, \
        eval_set=[(X_train, y_train), (X_test, y_test)], \
                  eval_metric='auc', early_stopping_rounds = 50)

输出结果为:

[499]   validation_0-auc:0.991635       validation_1-auc:0.939632

但是当我通过以下代码使用auc评分功能时:

y_pred = clf.predict(X_test)
print metrics.roc_auc_score(y_test,y_pred)

结果是:

0.855832401454

我的代码有什么问题吗?

【问题讨论】:

  • 检查 sklearn 中 roc_auc_score 的参数average。您还可以在 sklearn 的 github 源上搜索问题,因为 sklearn 和其他库之间的度量差异非常流行(大多数时候用户并不真正了解使用的度量标准)。这也不足为奇,因为有许多不同的定义。
  • @sascha 如果我直接使用 xgb。 auc 结果与 sklearn.metrics 输出匹配

标签: python machine-learning scikit-learn xgboost


【解决方案1】:

在 roc_auc_score() 函数中使用预测分数而不是类。

y_pred = clf.predict_proba(X_test)[:,1]
print metrics.roc_auc_score(y_test,y_pred)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-13
    • 2016-04-09
    • 2015-09-18
    • 2019-07-28
    • 2021-05-18
    • 2020-03-12
    • 2021-08-16
    相关资源
    最近更新 更多