TMVA Variable Importance

In [ ]:
from ROOT import TFile,TMVA, TTree, TCut
%jsroot on

Declare DataLoader

In [ ]:
TMVA.Tools.Instance()

inputFile = TFile.Open("https://raw.githubusercontent.com/iml-wg/tmvatutorials/master/inputdata.root")

loader = TMVA.DataLoader("dataset")

loader.AddVariable("var1")
loader.AddVariable("var2")
loader.AddVariable("var3")
loader.AddVariable("var4")
loader.AddVariable("var5 := var1*var2")

Setting up dataset

In [ ]:
tsignal = TTree()
tbackground = TTree()
inputFile.GetObject("Sig", tsignal)
inputFile.GetObject("Bkg", tbackground)

mycuts = TCut()
mycutb = TCut()
   
loader.AddSignalTree(tsignal, 1)           #signal weight = 1
loader.AddBackgroundTree (tbackground, 1)  #background weight = 1 

loader.PrepareTrainingAndTestTree(mycuts, mycutb,
                                  "nTrain_Signal=1000:nTrain_Background=1000:nTest_Signal=500:nTest_Background=500:SplitMode=Random:NormMode=NumEvents:!V" )

Variable importance

In [ ]:
vi = TMVA.VariableImportance(loader)

vi.BookMethod(TMVA.Types.kBDT, "BDT",
"!V:NTrees=5:MinNodeSize=2.5%:MaxDepth=2:BoostType=AdaBoost:AdaBoostBeta=0.5:UseBaggedBoost:BaggedSampleFraction=0.5:SeparationType=GiniIndex:nCuts=20" )

vi.SetType(TMVA.kShort)

vi.Evaluate()
In [ ]:
results=vi.GetResults()
results.Print()
results.Draw()