13 from ROOT
import TMVA, TFile, TTree, TCut, gROOT
14 from os.path
import isfile
16 from keras.models
import Sequential
17 from keras.layers.core
import Dense, Activation
18 from keras.regularizers
import l2
19 from keras.optimizers
import SGD
23 TMVA.PyMethodBase.PyInitialize()
25 output = TFile.Open(
'TMVA.root',
'RECREATE')
26 factory = TMVA.Factory(
'TMVAClassification', output,
27 '!V:!Silent:Color:DrawProgressBar:Transformations=D,G:AnalysisType=multiclass')
30 if not isfile(
'tmva_example_multiple_background.root'):
31 createDataMacro = str(gROOT.GetTutorialDir()) +
'/tmva/createData.C'
32 print(createDataMacro)
33 gROOT.ProcessLine(
'.L {}'.format(createDataMacro))
34 gROOT.ProcessLine(
'create_MultipleBackground(4000)')
36 data = TFile.Open(
'tmva_example_multiple_background.root')
37 signal = data.Get(
'TreeS')
38 background0 = data.Get(
'TreeB0')
39 background1 = data.Get(
'TreeB1')
40 background2 = data.Get(
'TreeB2')
42 dataloader = TMVA.DataLoader(
'dataset')
43 for branch
in signal.GetListOfBranches():
44 dataloader.AddVariable(branch.GetName())
46 dataloader.AddTree(signal,
'Signal')
47 dataloader.AddTree(background0,
'Background_0')
48 dataloader.AddTree(background1,
'Background_1')
49 dataloader.AddTree(background2,
'Background_2')
50 dataloader.PrepareTrainingAndTestTree(TCut(
''),
51 'SplitMode=Random:NormMode=NumEvents:!V')
57 model.add(Dense(32, activation=
'relu', W_regularizer=l2(1e-5), input_dim=4))
58 model.add(Dense(4, activation=
'softmax'))
61 model.compile(loss=
'categorical_crossentropy', optimizer=SGD(lr=0.01), metrics=[
'accuracy',])
64 model.save(
'model.h5')
68 factory.BookMethod(dataloader, TMVA.Types.kFisher,
'Fisher',
69 '!H:!V:Fisher:VarTransform=D,G')
70 factory.BookMethod(dataloader, TMVA.Types.kPyKeras,
"PyKeras",
71 'H:!V:VarTransform=D,G:FilenameModel=model.h5:NumEpochs=20:BatchSize=32')
74 factory.TrainAllMethods()
75 factory.TestAllMethods()
76 factory.EvaluateAllMethods()