42 for(
auto &roc:
fROCs) avg+=roc.second;
43 return avg/fROCs.size();
63 fLogger <<
kINFO <<
Form(
"Fold %i ROC-Int : %.4f",item.first,item.second) << std::endl;
65 fLogger <<
kINFO <<
"------------------------" <<
Endl;
76 fROCCurves->GetXaxis()->SetTitle(
" Signal Efficiency ");
77 fROCCurves->GetYaxis()->SetTitle(
" Background Rejection ");
80 c->
SetTitle(
"Cross Validation ROC Curves");
86 fNumFolds(5),fClassifier(new
TMVA::
Factory(
"CrossValidation",
"!V:!ROC:Silent:!ModelPersistence:!Color:!DrawProgressBar:AnalysisType=Classification"))
108 if(methodName ==
"")
Log() <<
kFATAL <<
"No method booked for cross-validation" <<
Endl;
112 Log() <<
kINFO <<
"Evaluate method: " << methodTitle <<
Endl;
123 Log() <<
kDEBUG <<
"Fold (" << methodTitle <<
"): " << i <<
Endl;
125 TString foldTitle = methodTitle;
126 foldTitle +=
"_fold";
std::vector< Double_t > fSigs
Float_t GetROCAverage() const
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
MsgLogger & Endl(MsgLogger &ml)
void AddOutput(Types::ETreeType type, Types::EAnalysisType analysisType)
void SetTitle(const char *title="")
Set canvas title.
const CrossValidationResult & GetResults() const
T GetValue(const TString &key)
CrossValidationResult fResults
A TMultiGraph is a collection of TGraph (or derived) objects.
std::unique_ptr< Factory > fClassifier
virtual void SetTitle(const char *title="")
Set graph title.
std::vector< Double_t > fEff10s
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
static void SetIsTraining(Bool_t)
when this static function is called, it sets the flag whether events with negative event weight shoul...
void SetNumFolds(UInt_t i)
Base class for all machine learning algorithms.
std::vector< Double_t > fTrainEff01s
std::vector< Double_t > fTrainEff10s
virtual Double_t GetEfficiency(const TString &, Types::ETreeType, Double_t &err)
fill background efficiency (resp.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
std::vector< Double_t > fEff01s
void DeleteResults(const TString &, Types::ETreeType type, Types::EAnalysisType analysistype)
delete the results stored for this particulary Method instance (here appareantly called resultsName i...
char * Form(const char *fmt,...)
Float_t GetROCStandardDeviation() const
const TString & GetMethodName() const
std::vector< Double_t > fTrainEff30s
virtual Double_t GetSignificance() const
compute significance of mean difference significance = |<S> - |/Sqrt(RMS_S2 + RMS_B2) ...
CrossValidation(DataLoader *loader)
virtual void Evaluate()
Virtual method to be implmented with your algorithm.
virtual Double_t GetSeparation(TH1 *, TH1 *) const
compute "separation" defined as <s2> = (1/2) Int_-oo..+oo { (S(x) - B(x))^2/(S(x) + B(x)) dx } ...
std::shared_ptr< DataLoader > fDataLoader
TMultiGraph * GetROCCurves(Bool_t fLegend=kTRUE)
std::vector< Double_t > fEffAreas
virtual void Draw(Option_t *option="")
Draw a canvas.
std::vector< Double_t > fSeps
Abstract ClassifierFactory template that handles arbitrary types.
std::map< UInt_t, Float_t > fROCs
A Graph is a graphics object made of two arrays X and Y with npoints each.
TCanvas * Draw(const TString name="CrossValidation") const
std::vector< Double_t > fEff30s
virtual Double_t GetTrainingEfficiency(const TString &)
virtual TLegend * BuildLegend(Double_t x1=0.5, Double_t y1=0.67, Double_t x2=0.88, Double_t y2=0.88, const char *title="", Option_t *option="")
Build a legend from the graphical objects in the pad.
Types::EAnalysisType GetAnalysisType() const
Double_t Sqrt(Double_t x)
static void EnableOutput()
virtual void TestClassification()
initialization
std::shared_ptr< TMultiGraph > fROCCurves
const char * Data() const