34void TMVAMulticlass(
TString myMethodList =
"" )
47 std::map<std::string,int> Use;
62 std::cout << std::endl;
63 std::cout <<
"==> Start TMVAMulticlass" << std::endl;
65 if (myMethodList !=
"") {
66 for (std::map<std::string,int>::iterator it = Use.begin(); it != Use.end(); it++) it->second = 0;
69 for (
UInt_t i=0; i<mlist.size(); i++) {
70 std::string regMethod(mlist[i]);
72 if (Use.find(regMethod) == Use.end()) {
73 std::cout <<
"Method \"" << regMethod <<
"\" not known in TMVA under this name. Choose among the following:" << std::endl;
74 for (std::map<std::string,int>::iterator it = Use.begin(); it != Use.end(); it++) std::cout << it->first <<
" ";
75 std::cout << std::endl;
83 TString outfileName =
"TMVAMulticlass.root";
87 "!V:!Silent:Color:DrawProgressBar:Transformations=I;D;P;G,D:AnalysisType=multiclass" );
91 dataloader->
AddVariable(
"var2",
"Variable 2",
"",
'F' );
92 dataloader->
AddVariable(
"var3",
"Variable 3",
"units",
'F' );
93 dataloader->
AddVariable(
"var4",
"Variable 4",
"units",
'F' );
95 TFile *input(
nullptr);
96 TString fname =
gROOT->GetTutorialDir() +
"/machine_learning/data/tmva_multiclass_example.root";
97 if (!
gSystem->AccessPathName( fname )) {
101 std::cout <<
"ERROR: could not open data file" << std::endl;
104 std::cout <<
"--- TMVAMulticlass: Using input file: " << input->GetName() << std::endl;
106 TTree *signalTree = (
TTree*)input->Get(
"TreeS");
107 TTree *background0 = (
TTree*)input->Get(
"TreeB0");
108 TTree *background1 = (
TTree*)input->Get(
"TreeB1");
109 TTree *background2 = (
TTree*)input->Get(
"TreeB2");
112 dataloader->
AddTree (signalTree,
"Signal");
113 dataloader->
AddTree (background0,
"bg0");
114 dataloader->
AddTree (background1,
"bg1");
115 dataloader->
AddTree (background2,
"bg2");
120 factory->
BookMethod( dataloader,
TMVA::Types::kBDT,
"BDTG",
"!H:!V:NTrees=1000:BoostType=Grad:Shrinkage=0.10:UseBaggedBoost:BaggedSampleFraction=0.50:nCuts=20:MaxDepth=2");
122 factory->
BookMethod( dataloader,
TMVA::Types::kMLP,
"MLP",
"!H:!V:NeuronType=tanh:NCycles=1000:HiddenLayers=N+5,5:TestRate=5:EstimatorType=MSE");
124 factory->
BookMethod( dataloader,
TMVA::Types::kFDA,
"FDA_GA",
"H:!V:Formula=(0)+(1)*x0+(2)*x1+(3)*x2+(4)*x3:ParRanges=(-1,1);(-10,10);(-10,10);(-10,10);(-10,10):FitMethod=GA:PopSize=300:Cycles=3:Steps=20:Trim=True:SaveBestGen=1" );
126 factory->
BookMethod( dataloader,
TMVA::Types::kPDEFoam,
"PDEFoam",
"!H:!V:TailCut=0.001:VolFrac=0.0666:nActiveCells=500:nSampl=2000:nBin=5:Nmin=100:Kernel=None:Compress=T" );
130 TString layoutString(
"Layout=TANH|100,TANH|50,TANH|10,LINEAR");
131 TString trainingStrategyString(
"TrainingStrategy=Optimizer=ADAM,LearningRate=1e-3,"
132 "TestRepetitions=1,ConvergenceSteps=10,BatchSize=100,MaxEpochs=20");
133 TString nnOptions(
"!H:V:ErrorStrategy=CROSSENTROPY:VarTransform=N:"
134 "WeightInitialization=XAVIERUNIFORM:Architecture=GPU");
135 nnOptions.Append(
":");
136 nnOptions.Append(layoutString);
137 nnOptions.Append(
":");
138 nnOptions.Append(trainingStrategyString);
142 TString layoutString(
"Layout=TANH|100,TANH|50,TANH|10,LINEAR");
143 TString trainingStrategyString(
"TrainingStrategy=Optimizer=ADAM,LearningRate=1e-3,"
144 "TestRepetitions=1,ConvergenceSteps=10,BatchSize=100,MaxEpochs=20");
145 TString nnOptions(
"!H:V:ErrorStrategy=CROSSENTROPY:VarTransform=N:"
146 "WeightInitialization=XAVIERUNIFORM:Architecture=GPU");
147 nnOptions.Append(
":");
148 nnOptions.Append(layoutString);
149 nnOptions.Append(
":");
150 nnOptions.Append(trainingStrategyString);
169 std::cout <<
"==> Wrote root file: " << outputFile->
GetName() << std::endl;
170 std::cout <<
"==> TMVAMulticlass is done!" << std::endl;
181int main(
int argc,
char** argv )
185 for (
int i=1; i<argc; i++) {
187 if(regMethod==
"-b" || regMethod==
"--batch")
continue;
189 methodList += regMethod;
191 TMVAMulticlass(methodList);
unsigned int UInt_t
Unsigned integer 4 bytes (unsigned int).
A file, usually with extension .root, that stores data and code in the form of serialized objects in ...
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
Create / open a file.
void Close(Option_t *option="") override
Close a file.
void PrepareTrainingAndTestTree(const TCut &cut, const TString &splitOpt)
prepare the training and test trees -> same cuts for signal and background
void AddTree(TTree *tree, const TString &className, Double_t weight=1.0, const TCut &cut="", Types::ETreeType tt=Types::kMaxTreeType)
void AddVariable(const TString &expression, const TString &title, const TString &unit, char type='F', Double_t min=0, Double_t max=0)
user inserts discriminating variable in data set info
This is the main MVA steering class.
void TrainAllMethods()
Iterates through all booked methods and calls training.
void TestAllMethods()
Evaluates all booked methods on the testing data and adds the output to the Results in the corresponi...
void EvaluateAllMethods(void)
Iterates over all MVAs that have been booked, and calls their evaluation methods.
MethodBase * BookMethod(DataLoader *loader, MethodName theMethodName, TString methodTitle, TString theOption="")
Books an MVA classifier or regression method.
const char * GetName() const override
Returns name of object.
A TTree represents a columnar dataset.
create variable transformations
void TMVAMultiClassGui(const char *fName="TMVAMulticlass.root", TString dataset="")