GridSearch调参xgb

import xgboost as xgb
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_auc_score

train_data = pd.read_csv(‘train.csv’) # 读取数据
y = train_data.pop(‘30’).values # 用pop方式将训练数据中的标签值y取出来,作为训练目标,这里的‘30’是标签的列名
col = train_data.columns
x = train_data[col].values # 剩下的列作为训练数据
train_x, valid_x, train_y, valid_y = train_test_split(x, y, test_size=0.333, random_state=0) # 分训练集和验证集

parameters = {
‘max_depth’: [5, 10, 15, 20, 25],
‘learning_rate’: [0.01, 0.02, 0.05, 0.1, 0.15],
‘n_estimators’: [500, 1000, 2000, 3000, 5000],
‘min_child_weight’: [0, 2, 5, 10, 20],
‘max_delta_step’: [0, 0.2, 0.6, 1, 2],
‘subsample’: [0.6, 0.7, 0.8, 0.85, 0.95],
‘colsample_bytree’: [0.5, 0.6, 0.7, 0.8, 0.9],
‘reg_alpha’: [0, 0.25, 0.5, 0.75, 1],
‘reg_lambda’: [0.2, 0.4, 0.6, 0.8, 1],
‘scale_pos_weight’: [0.2, 0.4, 0.6, 0.8, 1]

}

xlf = xgb.XGBClassifier(max_depth=10,
learning_rate=0.01,
n_estimators=2000,
silent=True,
objective=‘binary:logistic’,
nthread=-1,
gamma=0,
min_child_weight=1,
max_delta_step=0,
subsample=0.85,
colsample_bytree=0.7,
colsample_bylevel=1,
reg_alpha=0,
reg_lambda=1,
scale_pos_weight=1,
seed=1440,
missing=None)

gsearch = GridSearchCV(xlf, param_grid=parameters, scoring=‘accuracy’, cv=3)
gsearch.fit(train_x, train_y)

print(“Best score: %0.3f” % gsearch.best_score_)
print(“Best parameters set:”)
best_parameters = gsearch.best_estimator_.get_params()
for param_name in sorted(parameters.keys()):
print("\t%s: %r" % (param_name, best_parameters[param_name]))

数据下载地址

你可能感兴趣的:(数据挖掘,机器学习)