16if __name__ ==
"__main__":
17 from basf2
import conditions
19 conditions.testing_payloads = [
20 'localdb/database.txt'
22 train_file = basf2.find_file(
"mva/train_D0toKpipi.root",
"examples")
23 test_file = basf2.find_file(
"mva/test_D0toKpipi.root",
"examples")
25 training_data = basf2_mva.vector(train_file)
26 testing_data = basf2_mva.vector(test_file)
49 'daughter(0, chiProb)',
50 'daughter(1, chiProb)',
51 'daughter(2, chiProb)',
52 'daughter(0, kaonID)',
53 'daughter(0, pionID)',
59 general_options = basf2_mva.GeneralOptions()
60 general_options.m_datafiles = training_data
61 general_options.m_treename =
"tree"
62 general_options.m_identifier =
"MVADatabaseIdentifier"
63 general_options.m_variables = basf2_mva.vector(*variables)
64 general_options.m_target_variable =
"isSignal"
66 trivial_options = basf2_mva.TrivialOptions()
68 data_options = basf2_mva.FastBDTOptions()
69 data_options.m_nTrees = 0
71 fastbdt_options = basf2_mva.FastBDTOptions()
72 fastbdt_options.m_nTrees = 100
73 fastbdt_options.m_nCuts = 10
74 fastbdt_options.m_nLevels = 3
75 fastbdt_options.m_shrinkage = 0.2
76 fastbdt_options.m_randRatio = 0.5
78 tmva_bdt_options = basf2_mva.TMVAOptionsClassification()
79 tmva_bdt_options.m_config = (
"!H:!V:CreateMVAPdfs:NTrees=100:BoostType=Grad:Shrinkage=0.2:UseBaggedBoost:"
80 "BaggedSampleFraction=0.5:nCuts=1024:MaxDepth=3:IgnoreNegWeightsInTraining")
81 tmva_bdt_options.m_prepareOptions = (
"SplitMode=block:V:nTrain_Signal=9691:nTrain_Background=136972:"
82 "nTest_Signal=1:nTest_Background=1")
84 tmva_nn_options = basf2_mva.TMVAOptionsClassification()
85 tmva_nn_options.m_type =
"MLP"
86 tmva_nn_options.m_method =
"MLP"
87 tmva_nn_options.m_config = (
"H:!V:CreateMVAPdfs:VarTransform=N:NCycles=100:HiddenLayers=N+1:TrainingMethod=BFGS")
88 tmva_nn_options.m_prepareOptions = (
"SplitMode=block:V:nTrain_Signal=9691:nTrain_Background=136972:"
89 "nTest_Signal=1:nTest_Background=1")
91 sklearn_bdt_options = basf2_mva.PythonOptions()
92 sklearn_bdt_options.m_framework =
"sklearn"
93 param =
'{"n_estimators": 100, "learning_rate": 0.2, "max_depth": 3, "random_state": 0, "subsample": 0.5}'
94 sklearn_bdt_options.m_config = param
96 xgboost_options = basf2_mva.PythonOptions()
97 xgboost_options.m_framework =
"xgboost"
98 param = (
'{"max_depth": 3, "eta": 0.1, "silent": 1, "objective": "binary:logistic",'
99 '"subsample": 0.5, "nthread": 1, "nTrees": 400}')
100 xgboost_options.m_config = param
103 for label, options
in [(
"DataLoading", data_options), (
"FastBDT", fastbdt_options),
104 (
"TMVA-BDT", tmva_bdt_options), (
"TMVA-NN", tmva_nn_options),
105 (
"SKLearn-BDT", sklearn_bdt_options), (
"XGBoost", xgboost_options),
106 (
"Trivial", trivial_options)]:
107 training_start = time.time()
108 general_options.m_identifier = label
109 basf2_mva.teacher(general_options, options)
110 training_stop = time.time()
111 training_time = training_stop - training_start
113 inference_start = time.time()
114 p, t = method.apply_expert(basf2_mva.vector(testing_data), general_options.m_treename)
115 inference_stop = time.time()
116 inference_time = inference_stop - inference_start
118 print(label, training_time, inference_time, auc)
119 stats.append((label, training_time, inference_time, auc))
calculate_auc_efficiency_vs_background_retention(p, t, w=None)