xgboost使用步骤
2017-06-01 09:51
134 查看
1.
2.
user_index, training_data, label = make_train_set(train_start_date, train_end_date, test_start_date, test_end_date) X_train, X_test, y_train, y_test = train_test_split(training_data.values, label.values, test_size=0.2, random_state=0) dtrain=xgb.DMatrix(X_train, label=y_train) dtest=xgb.DMatrix(X_test, label=y_test) param = {'learning_rate' : 0.1, 'n_estimators': 1000, 'max_depth': 3, 'min_child_weight': 5, 'gamma': 0, 'subsample': 1.0, 'colsample_bytree': 0.8, 'scale_pos_weight': 1, 'eta': 0.05, 'silent': 0, 'objective': 'binary:logistic'} num_round = 283 param['nthread'] = 4 #param['eval_metric'] = "auc" param['eval_metric']='logloss' plst = param.items() #plst+= [('eval_metric', 'logloss')] evallist = [(dtest, 'eval'), (dtrain, 'train')] bst=xgb.train(plst, dtrain, num_round, evallist) sub_user_index, sub_trainning_data = make_test_set(sub_start_date, sub_end_date,) sub_trainning_data = xgb.DMatrix(sub_trainning_data.values) y = bst.predict(sub_trainning_data)
2.
train = pd.read_csv("data/train.csv") tests = pd.read_csv("data/test.csv") #用sklearn.cross_validation进行训练数据集划分,这里训练集和交叉验证集比例为7:3,可以自己根据需要设置 train_xy,val = train_test_split(train, test_size = 0.3,random_state=1) y = train_xy.label X = train_xy.drop(['label'],axis=1) val_y = val.label val_X = val.drop(['label'],axis=1) #xgb矩阵赋值 xgb_val = xgb.DMatrix(val_X,label=val_y) xgb_train = xgb.DMatrix(X, label=y) xgb_test = xgb.DMatrix(tests) params={ 'booster':'gbtree', 'objective': 'multi:softmax', #多分类的问题 'num_class':10, # 类别数,与 multisoftmax 并用 'gamma':0.1, # 用于控制是否后剪枝的参数,越大越保守,一般0.1、0.2这样子。 'max_depth':12, # 构建树的深度,越大越容易过拟合 'lambda':2, # 控制模型复杂度的权重值的L2正则化项参数,参数越大,模型越不容易过拟合。 'subsample':0.7, # 随机采样训练样本 'colsample_bytree':0.7, # 生成树时进行的列采样 'min_child_weight':3, # 这个参数默认是 1,是每个叶子里面 h 的和至少是多少,对正负样本不均衡时的 0-1 分类而言 #,假设 h 在 0.01 附近,min_child_weight 为 1 意味着叶子节点中最少需要包含 100 个样本。 #这个参数非常影响结果,控制叶子节点中二阶导的和的最小值,该参数值越小,越容易 overfitting。 'silent':0 ,#设置成1则没有运行信息输出,最好是设置为0. 'eta': 0.007, # 如同学习率 'seed':1000, 'nthread':7,# cpu 线程数 #'eval_metric': 'auc' } plst = list(params.items()) num_rounds = 50 # 迭代次数 watchlist = [(xgb_train, 'train'),(xgb_val, 'val')] #训练模型并保存 # early_stopping_rounds 当设置的迭代次数较大时,early_stopping_rounds 可在一定的迭代次数内准确率没有提升就停止训练 model = xgb.train(plst, xgb_train, num_rounds, watchlist,early_stopping_rounds=20) model.save_model('data/xgb.model') # 用于存储训练出的模型 print ("best best_ntree_limit",model.best_ntree_limit) preds = model.predict(xgb_test,ntree_limit=model.best_ntree_limit) np.savetxt('xgb_submission.csv',np.c_[range(1,len(tests)+1),preds],delimiter=',',header='ImageId,Label',comments='',fmt='%d')
相关文章推荐
- XGBoost:在Python中使用XGBoost
- XGBoost Windows 下的 安装 使用
- xgboost入门以及windows下安装及使用一
- windows在python安装使用xgboost走了些弯路
- xgboost使用小结
- XGBoost:在Python中使用XGBoost
- 在WindowsXP下使用Dev-Cpp编译Boost步骤
- windows(64位)下用GPU版本的mxnet配置(绑定python)+xgboost快速安装使用
- python+xgboost在windows上的安装和使用
- xgboost安装使用(anaconda中)
- windows下在Java中使用xgboost 详细配置教程
- 本人64位windows下安装最新版XGBoost,附操作步骤图
- scala-spark版本xgboost包使用
- Windows10(64)+anaconda2(python2.7)安装xgboost详细步骤
- 记录xgboost python 线性回归使用方法
- xgboost入门以及windows下安装及使用二
- XGBoost原理及在Python中使用XGBoost
- xgboost入门以及windows下安装及使用一
- xgboost使用案例一
- xgboost+python参数介绍的简单使用