我将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
我的代码有什么问题吗?
使用预测分数代替roc_auc_score()函数中的类。
y_pred = clf.predict_proba(X_test)[:,1]
print metrics.roc_auc_score(y_test,y_pred)