来自xgb和sklearn.metrics的不同AUC分数

时间:2017-02-25 13:25:34

标签: python machine-learning scikit-learn xgboost

我正在使用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

我的代码有什么问题吗?

1 个答案:

答案 0 :(得分:0)

使用预测分数代替roc_auc_score()函数中的类。

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