xgb和sklearn.metrics的AUC得分不同

问题描述 投票:1回答:1

我将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

我的代码有什么问题吗?

python machine-learning scikit-learn xgboost
1个回答
0
投票

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

y_pred = clf.predict_proba(X_test)[:,1]
print metrics.roc_auc_score(y_test,y_pred)
© www.soinside.com 2019 - 2024. All rights reserved.