import ROOT
from ROOT import TFile, TMVA, TCut
%jsmva on
infname = "files/tmva_class_example.root"
dataset = "files/tmva_class_example"
treeNameSig = "TreeS"
treeNameBkg = "TreeB"
outfname = "files/TMVA.root"
outputFile = TFile( outfname, 'RECREATE' )
TMVA.Tools.Instance();
factory = TMVA.Factory(JobName="TMVAClassification", TargetFile=outputFile,
V=False, Color=False, DrawProgressBar=True, Transformations=["I", "D", "P", "G","D"],
AnalysisType="Classification")
loader = TMVA.DataLoader(dataset)
loader.AddVariable( "myvar1 := var1+var2", 'F' )
loader.AddVariable( "myvar2 := var1-var2", "Expression 2", 'F' )
loader.AddVariable( "var3", "Variable 3", 'F' )
loader.AddVariable( "var4", "Variable 4", 'F' )
loader.AddSpectator( "spec1:=var1*2", "Spectator 1", 'F' )
loader.AddSpectator( "spec2:=var1*3", "Spectator 2", 'F' )
if ROOT.gSystem.AccessPathName( "./"+infname ) != 0:
ROOT.gSystem.Exec( "cd files; wget https://root.cern.ch/" + infname)
input = TFile.Open( infname )
# Get the signal and background trees for training
signal = input.Get( treeNameSig )
background = input.Get( treeNameBkg )
# Global event weights (see below for setting event-wise weights)
signalWeight = 1.0
backgroundWeight = 1.0
signalWeight = 1.0
backgroundWeight = 1.0
mycuts = TCut("")
mycutb = TCut("")
loader.AddSignalTree(signal, signalWeight)
loader.AddBackgroundTree(background, backgroundWeight)
loader.fSignalWeight = signalWeight
loader.fBackgroundWeight = backgroundWeight
loader.fTreeS = signal
loader.fTreeB = background
loader.PrepareTrainingAndTestTree(SigCut=mycuts, BkgCut=mycutb,
nTrain_Signal=1000, nTrain_Background=1000, nTest_Signal=2000, nTest_Background=2000,
SplitMode="Random", NormMode="NumEvents", V=False);
loader.DrawInputVariable("myvar1")
loader.DrawInputVariable("myvar1", processTrfs=["D", "N"]) #I;N;D;P;U;G,D
loader.DrawCorrelationMatrix("Signal")
factory.BookDNN(loader)
factory.BookMethod( DataLoader=loader, Method=TMVA.Types.kSVM, MethodTitle="SVM",
Gamma=0.25, Tol=0.001, VarTransform="Norm" )
factory.BookMethod( loader,TMVA.Types.kMLP, "MLP",
H=False, V=False, NeuronType="tanh", VarTransform="N", NCycles=600, HiddenLayers="N+5",
TestRate=5, UseRegulator=False )
factory.BookMethod( loader,TMVA.Types.kLD, "LD",
H=False, V=False, VarTransform="None", CreateMVAPdfs=True, PDFInterpolMVAPdf="Spline2",
NbinsMVAPdf=50, NsmoothMVAPdf=10 )
factory.BookMethod( loader,TMVA.Types.kLikelihood,"Likelihood","NSmoothSig[0]=20:NSmoothBkg[0]=20:NSmoothBkg[1]=10",
NSmooth=1, NAvEvtPerBin=50, H=True, V=False,TransformOutput=True,PDFInterpol="Spline2")
factory.BookMethod( loader, TMVA.Types.kBDT, "BDT",
H=False, V=False, NTrees=850, MinNodeSize="2.5%", MaxDepth=3, BoostType="AdaBoost", AdaBoostBeta=0.5,
UseBaggedBoost=True, BaggedSampleFraction=0.5, SeparationType="GiniIndex", nCuts=20 )
trainingStrategy = [{
"LearningRate": 1e-1,
"Momentum": 0.0,
"Repetitions": 1,
"ConvergenceSteps": 100,
"BatchSize": 20,
"TestRepetitions": 1,
"WeightDecay": 0.001,
"Regularization": "NONE",
"DropConfig": "0.0+0.5+0.5+0.5",
"DropRepetitions": 1,
"Multithreading": True
}, {
"LearningRate": 1e-2,
"Momentum": 0.5,
"Repetitions": 1,
"ConvergenceSteps": 100,
"BatchSize": 30,
"TestRepetitions": 1,
"WeightDecay": 0.001,
"Regularization": "L2",
"DropConfig": "0.0+0.1+0.1+0.1",
"DropRepetitions": 1,
"Multithreading": True
}, {
"LearningRate": 1e-2,
"Momentum": 0.3,
"Repetitions": 1,
"ConvergenceSteps": 100,
"BatchSize": 40,
"TestRepetitions": 1,
"WeightDecay": 0.001,
"Regularization": "L2",
"Multithreading": True
},{
"LearningRate": 1e-3,
"Momentum": 0.1,
"Repetitions": 1,
"ConvergenceSteps": 100,
"BatchSize": 70,
"TestRepetitions": 1,
"WeightDecay": 0.001,
"Regularization": "NONE",
"Multithreading": True
}]
factory.BookMethod(DataLoader=loader, Method=TMVA.Types.kDNN, MethodTitle="DNN",
H = False, V=False, VarTransform="Normalize", ErrorStrategy="CROSSENTROPY",
Layout=["TANH|100", "TANH|50", "TANH|10", "LINEAR"], TrainingStrategy=trainingStrategy, Architecture="CPU")
factory.TrainAllMethods()
factory.TestAllMethods()
factory.EvaluateAllMethods()
factory.DrawOutputDistribution(dataset, "MLP")
factory.DrawProbabilityDistribution(dataset, "LD")
factory.DrawROCCurve(dataset)
factory.DrawCutEfficiencies(dataset, "MLP")
factory.DrawNeuralNetwork(dataset, "MLP")
factory.DrawNeuralNetwork(dataset, "DNN")
factory.DrawDecisionTree(dataset, "BDT") #11
factory.DrawDNNWeights(dataset, "DNN")
outputFile.Close()