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()