Belle II Software  light-2212-foldex
grid_search.py
1 #!/usr/bin/env python3
2 
3 
10 
11 import basf2_mva
12 import basf2_mva_util
13 import multiprocessing
14 import itertools
15 
16 if __name__ == "__main__":
17 
18  training_data = basf2_mva.vector("train.root")
19  test_data = basf2_mva.vector("test.root")
20 
21  # Train model with default parameters
22  general_options = basf2_mva.GeneralOptions()
23  general_options.m_datafiles = training_data
24  general_options.m_treename = "tree"
25  general_options.m_identifier = "test.xml"
26  general_options.m_variables = basf2_mva.vector('p', 'pz', 'daughter(0, kaonID)', 'chiProb', 'M')
27  general_options.m_target_variable = "isSignal"
28 
29  fastbdt_options = basf2_mva.FastBDTOptions()
30  basf2_mva.teacher(general_options, fastbdt_options)
31 
32  # Load the model and train it again searching for the best hyperparameters
33  def grid_search(hyperparameters):
34  nTrees, depth = hyperparameters
35  method = basf2_mva_util.Method(general_options.m_identifier)
36  options = basf2_mva.FastBDTOptions()
37  options.m_nTrees = nTrees
38  options.m_nLevels = depth
39  m = method.train_teacher(training_data, general_options.m_treename, specific_options=options)
40  p, t = m.apply_expert(test_data, general_options.m_treename)
42 
43  p = multiprocessing.Pool(None, maxtasksperchild=1)
44  results = p.map(grid_search, itertools.product([10, 50, 100, 500, 1000], [2, 4, 6]))
45  for hyperparameters, auc in results:
46  print("Hyperparameters", hyperparameters, "AUC", auc)
def calculate_auc_efficiency_vs_background_retention(p, t, w=None)