Skip to content
Snippets Groups Projects
Select Git revision
  • master
  • blackcat
  • deepsea
3 results

clock_reset_handler_240.vhd

Blame
  • 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