00001 #ifndef C_MODELTREE__H
00002 #define C_MODELTREE__H
00003
00004 #include "ctrees.h"
00005 #include "clocalregression.h"
00006
00007 class CLinearRegressionDataFactory : public CTreeDataFactory<CMapping<double> *>
00008 {
00009 protected:
00010 int tresh1;
00011 int tresh2;
00012 int tresh3;
00013
00014 CDataSet *input;
00015 CDataSet1D *output;
00016
00017 double lambda;
00018 public:
00019 CLinearRegressionDataFactory(CDataSet *input, CDataSet1D *output, int tresh1, int tresh2, int tresh3, double lambda);
00020 virtual ~CLinearRegressionDataFactory();
00021
00022 virtual CMapping<double> *createTreeData(DataSubset *dataSubset, int numLeaves);
00023 virtual void deleteData(CMapping<double> *linReg);
00024
00025 };
00026
00027 class CModelTree : public CMapping<double>
00028 {
00029 protected:
00030 virtual double doGetOutputValue(ColumnVector *input);
00031
00032 CTree<CMapping<double> *> *tree;
00033
00034 bool deleteTree;
00035 public:
00036
00037 CModelTree(CDataSet *inputData, CSplittingConditionFactory *splittingFactory, CTreeDataFactory<CMapping<double> *> *l_dataFactory);
00038 CModelTree(CTree<CMapping<double> *> *tree);
00039
00040 virtual ~CModelTree();
00041
00042 CTree<CMapping<double> *> *getTree();
00043 };
00044
00045 class CExtraModelTree : public CModelTree
00046 {
00047 public:
00048
00049
00050 CExtraModelTree(CDataSet *inputData, CDataSet1D *outputData, CTreeDataFactory<CMapping<double> *> *dataFactory, unsigned int K,unsigned int n_min, double outTresh);
00051
00052 virtual ~CExtraModelTree();
00053 };
00054
00055
00056 class CExtraLinearRegressionModelTree : public CExtraModelTree
00057 {
00058
00059
00060
00061 public:
00062 CExtraLinearRegressionModelTree(CDataSet *inputData, CDataSet1D *outputData, unsigned int K,unsigned int n_min, double outTresh, int tresh1, int tresh2, int tresh3, double lambda);
00063
00064 virtual ~CExtraLinearRegressionModelTree();
00065 };
00066
00067
00068 #endif