www.pudn.com > DTreebydhm.rar > DecisionTree.h
#include#include #include #include #include #include "Node.h" class DecisionTree() { private: Node* root; int numOfIns; //样本数目 int numOfAttr; //属性树目 double** trainingSet; //训练集 double* weight; int* used; //记录已经作为分类依据使用过的属性 int numOfNodes; //记录已生成树的结点数 public: DecisionTree(); //done virtual ~DecisionTree(); //done void BuildTree(); Node* GenerateTree(int start,int end,double** trainingSet); //生成决策树 添加控制结点数目的判断和结点包含样本数的判断 加入权值 int Count(int attribute,int start,int end,double** trainingSet); //计算trainingset样本start到end中属性attribute值的数目 done //double Entropy(int attribute, int start,int end,double** trainingSet); //熵 done //double Gain(int attribute,int start,int end, double** trainingSet); //信息增益 done double SplitInfo(int attribute, int start,int end,double** trainingSet); //分裂信息 done double GainRatio(int attribute, int start,int end,double** trainingSet); //增益比率 done void sort(int attribute,int start,int end,double** trainingSet);//将样本按属性值排序 done Node* GetRoot();//done int GetnumOfIns();//done int GetnumOfAttr();//done int GetnumOfNodes(); void SetnumOfIns(int numOfIns); void SetnumOfAttr(int numOfAttr); void DeleteTree(Node* root);//done double ClassifyIns(double* instance);//用决策树对样本分类 void SaveTree(ofstream& fout,Node* node);//保存生成的树 void SaveTree(char* fname);//保存生成的树 Node* LoadNode(ifstream& fin);//读入结点 void LoadTree(char* fname);//读入树 void ShowTree(Node* node); }