30 #ifndef ROOT_TMVA_RuleFitAPI
31 #define ROOT_TMVA_RuleFitAPI
54 RuleFitAPI(
const TMVA::MethodRuleFit *rfbase, TMVA::RuleFit *rulefit, EMsgType minType );
56 virtual ~RuleFitAPI();
59 void WelcomeMessage();
65 void SetRFWorkDir(
const char * wdir);
68 void CheckRFWorkDir();
71 inline void TrainRuleFit();
72 inline void TestRuleFit();
76 Bool_t ReadModelSum();
79 const TString GetRFWorkDir()
const {
return fRFWorkDir; }
83 enum ERFMode { kRfRegress=1, kRfClass=2 };
84 enum EModel { kRfLinear=0, kRfRules=1, kRfBoth=2 };
85 enum ERFProgram { kRfTrain=0, kRfPredict, kRfVarimp };
117 void FillRealParmsDef();
118 void FillIntParmsDef();
120 void SetTrainParms();
127 void SetRFTrain() { fRFProgram = kRfTrain; }
128 void SetRFPredict() { fRFProgram = kRfPredict; }
129 void SetRFVarimp() { fRFProgram = kRfVarimp; }
132 inline TString GetRFName(TString name);
133 inline Bool_t OpenRFile(TString name, std::ofstream & f);
134 inline Bool_t OpenRFile(TString name, std::ifstream & f);
137 inline Bool_t WriteInt(std::ofstream & f,
const Int_t *v, Int_t n=1);
138 inline Bool_t WriteFloat(std::ofstream & f,
const Float_t *v, Int_t n=1);
139 inline Int_t ReadInt(std::ifstream & f, Int_t *v, Int_t n=1)
const;
140 inline Int_t ReadFloat(std::ifstream & f, Float_t *v, Int_t n=1)
const;
144 Bool_t WriteIntParms();
145 Bool_t WriteRealParms();
147 Bool_t WriteProgram();
148 Bool_t WriteRealVarImp();
150 Bool_t WriteRfStatus();
151 Bool_t WriteRuleFitMod();
152 Bool_t WriteRuleFitSum();
154 Bool_t WriteVarNames();
155 Bool_t WriteVarImp();
161 Bool_t ReadIntParms();
162 Bool_t ReadRealParms();
164 Bool_t ReadProgram();
165 Bool_t ReadRealVarImp();
167 Bool_t ReadRfStatus();
168 Bool_t ReadRuleFitMod();
169 Bool_t ReadRuleFitSum();
173 Bool_t ReadVarNames();
179 const MethodRuleFit *fMethodRuleFit;
182 std::vector<Float_t> fRFYhat;
183 std::vector<Float_t> fRFVarImp;
184 std::vector<Int_t> fRFVarImpInd;
186 IntParms fRFIntParms;
187 RealParms fRFRealParms;
188 std::vector<int> fRFLx;
189 ERFProgram fRFProgram;
192 mutable MsgLogger fLogger;
194 ClassDef(RuleFitAPI,0);
201 void TMVA::RuleFitAPI::TrainRuleFit()
210 void TMVA::RuleFitAPI::TestRuleFit()
220 void TMVA::RuleFitAPI::VarImp()
230 TString TMVA::RuleFitAPI::GetRFName(TString name)
233 return fRFWorkDir+
"/"+name;
237 Bool_t TMVA::RuleFitAPI::OpenRFile(TString name, std::ofstream & f)
240 TString fullName = GetRFName(name);
243 fLogger << kERROR <<
"Error opening RuleFit file for output: "
251 Bool_t TMVA::RuleFitAPI::OpenRFile(TString name, std::ifstream & f)
254 TString fullName = GetRFName(name);
257 fLogger << kERROR <<
"Error opening RuleFit file for input: "
265 Bool_t TMVA::RuleFitAPI::WriteInt(std::ofstream & f,
const Int_t *v, Int_t n)
268 if (!f.is_open())
return kFALSE;
269 return (Bool_t)f.write(reinterpret_cast<char const *>(v), n*
sizeof(Int_t));
273 Bool_t TMVA::RuleFitAPI::WriteFloat(std::ofstream & f,
const Float_t *v, Int_t n)
276 if (!f.is_open())
return kFALSE;
277 return (Bool_t)f.write(reinterpret_cast<char const *>(v), n*
sizeof(Float_t));
281 Int_t TMVA::RuleFitAPI::ReadInt(std::ifstream & f, Int_t *v, Int_t n)
const
284 if (!f.is_open())
return 0;
285 if (f.read(reinterpret_cast<char *>(v), n*
sizeof(Int_t)))
return 1;
290 Int_t TMVA::RuleFitAPI::ReadFloat(std::ifstream & f, Float_t *v, Int_t n)
const
293 if (!f.is_open())
return 0;
294 if (f.read(reinterpret_cast<char *>(v), n*
sizeof(Float_t)))
return 1;
298 #endif // RuleFitAPI_H