【发布时间】: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