a correct version
This commit is contained in:
@@ -13,6 +13,8 @@ dpath = 'data'
|
||||
|
||||
# load in training data, directly use numpy
|
||||
dtrain = np.loadtxt( dpath+'/training.csv', delimiter=',', skiprows=1, converters={32: lambda x:int(x=='s') } )
|
||||
print 'finish loading from csv '
|
||||
|
||||
label = dtrain[:,32]
|
||||
data = dtrain[:,1:31]
|
||||
# rescale weight to make it same as test set
|
||||
@@ -25,25 +27,28 @@ sum_wneg = sum( weight[i] for i in xrange(len(label)) if label[i] == 0.0 )
|
||||
print 'weight statistics: wpos=%g, wneg=%g, ratio=%g' % ( sum_wpos, sum_wneg, sum_wneg/sum_wpos )
|
||||
|
||||
# construct xgboost.DMatrix from numpy array, treat -999.0 as missing value
|
||||
xtrain = xgb.DMatrix( data, label=label, missing = -999.0 )
|
||||
xgmat = xgb.DMatrix( data, label=label, missing = -999.0, weight=weight )
|
||||
|
||||
# setup parameters for xgboost
|
||||
params = {}
|
||||
param = {}
|
||||
# use logistic regression loss
|
||||
param['loss_type'] = 3
|
||||
# scale weight of positive examples
|
||||
param['scale_pos_weight'] = sum_wpos/sum_wpos
|
||||
param['scale_pos_weight'] = sum_wneg/sum_wpos
|
||||
param['bst:eta'] = 0.1
|
||||
param['bst:max_depth'] = 6
|
||||
param['eval_metric'] = 'ams@0.15'
|
||||
param['eval_metric'] = 'auc'
|
||||
param['silent'] = 1
|
||||
param['eval_train'] = 1
|
||||
param['nthread'] = 16
|
||||
|
||||
# you can directly throw param in, though we want to watch multiple metrics here
|
||||
plst = param.items()+[('eval_metric', 'ams@0.15')]
|
||||
|
||||
watchlist = [ (xgmat,'train') ]
|
||||
# boost 120 tres
|
||||
num_round = 120
|
||||
print 'loading data end, start to boost trees'
|
||||
bst = xgb.train( xtrain, param, num_round );
|
||||
bst = xgb.train( plst, xgmat, num_round, watchlist );
|
||||
# save out model
|
||||
bst.save_model('higgs.model')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user