Select Git revision
      
  clock_reset_handler_240.vhd
  TreeLiteXG.py  3.27 KiB 
import joblib
import pickle
from pathlib import Path
import treelite
from PIDclass import *
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import xgboost as xgb
from sklearn.metrics import confusion_matrix, roc_curve, roc_auc_score
from pathlib import Path
import os
import shutil
from bayes_opt import BayesianOptimization
import gc
def bo_tune_xgb(max_depth, gamma, alpha, n_estimators ,learning_rate):
    params = {'max_depth': int(max_depth),
              'gamma': gamma,
              'alpha':alpha,
              'n_estimators': n_estimators,
              'learning_rate':learning_rate,
              'subsample': 0.8,
              'eta': 0.3,
              'eval_metric': 'auc','tree_method':'hist','objective':'binary:logistic', 'nthread' : 6}
    cv_result = xgb.cv(params=params, dtrain=dtrain, num_boost_round=10, nfold=5)
    return  cv_result['test-auc-mean'].iloc[-1]
TV = ['P','phi','theta',  'fAaxis','fBaxis','fPhi','RadialPosition','RadialAngle','fChi2NDF','NoRichHit','distance', 'NoTrdHit',"TRDe1","TRDe2","TRDe3","TRDe4",'DeltaBetaEL','fCharge']
#TV = ['P','phi','theta',  'fAaxis','fBaxis','fPhi','RadialPosition','RadialAngle','fChi2NDF','NoRichHit','distance', 'NoTrdHit', 'Likelihood','DeltaBetaEL','fCharge','fChi2']
ALL = PID(test_size = 0.5, electrons=50000,  hadrons=50000,train_var = TV , cut = None)
Y = np.load("YTest.npy") 
probaXG = np.load("y_predict_xgTest.npy")[:,1]
H_singleXG, E_singleXG, S_singleXG = roc_curve(Y, probaXG)
plt.plot(H_singleXG,E_singleXG )
dtrain = xgb.DMatrix(ALL.X_train, label = ALL.y_train)
dtest1=xgb.DMatrix(ALL.X_test, label = ALL.y_test)
#Invoking the Bayesian Optimizer with the specified parameters to tune
xgb_bo = BayesianOptimization(bo_tune_xgb, {'max_depth': (4, 10),
                                             'gamma': (0, 1),
                                            'alpha': (2,20),
                                             'learning_rate':(0,1),
                                             'n_estimators':(100,500)
                                            })
#performing Bayesian optimization for 5 iterations with 8 steps of random exploration with an #acquisition function of expected improvement
xgb_bo.maximize(n_iter=5, init_points=5)
max_param = xgb_bo.max['params']
param= {'alpha': max_param['alpha'], 'gamma': max_param['gamma'], 'learning_rate': max_param['learning_rate'], 'max_depth': int(round(max_param['max_depth'],0)), 'n_estimators': int(round(max_param['n_estimators'],0)), 'objective': 'reg:logistic'}
gc.collect()
#param= {'learning_rate': 0.02202981806046211,'n_estimators': 962, 'max_depth': 6}
bst = xgb.train(param, dtrain)
probaXG = bst.predict(dtest1)
H_singleXG, E_singleXG, S_singleXG = roc_curve(ALL.y_test, probaXG)
plt.plot(H_singleXG,E_singleXG )
plt.show()
model = treelite.Model.from_xgboost(bst)
toolchain = 'gcc'   # change this value as necessary
model.export_lib(toolchain=toolchain, libpath='./mymodel.so', verbose=True)
platform = 'unix'
model.export_srcpkg(platform=platform, toolchain=toolchain,
                    pkgpath='./mymodelALL_NoCHi.zip', libname='mymodel.so',
                    verbose=True)
# !rm -r  ~/Dokumente/Henrik/00658/mymodel
# !mv ./mymodel.zip ~/Dokumente/Henrik/00658/
# %cd ~/Dokumente/Henrik/00658/
# !unzip mymodel.zip
# %cd mymodel 
# !make