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); 
}