資源簡介
關(guān)于C語言的決策樹 里面有c語言的源代碼 還有一些簡單的介紹

代碼片段和文件信息
#include?“stdio.h“
#include?“malloc.h“
#include?“string.h“
#include?“math.h“
#define?M?100?//樣本數(shù)據(jù)條數(shù)最大100
#define?N?10??//每個屬性取值最多10個,類別最多10個
#define?Len?20?//屬性名及類名最長20個字符
typedef?struct?Node
{
int?splitting_criterion;
bool?Is_leafnode;
int?ClassID;?//
struct?Node*?child[N];//假設(shè)每個屬性最多有10個值
}T_Node;
int?Attri_Count=0;//實際屬性數(shù)目
int?total_att_vavle[N+1];//每個屬性實際的取值個數(shù)最后一個為類的數(shù)量
void?Compute_each_class_number(int?d[][N+1]int?tem_countint?each_class_nember[])//計算每個類的元組數(shù)
{
int?i;
for?(i=0;i {
each_class_nember[d[i][Attri_Count]]++;
}
}
bool?All_in_oneclass(int?d[][N+1]int?tem_count)
{
int?i=0;
int?t;
t=d[0][Attri_Count];
for?(i=0;i {
if?(t!=d[i][Attri_Count])
{
return?false;
}
}
return?true;
}
bool?Is_attlist_empty(int?attribute_list[])
{
int?i=0;
for?(i=0;i {
if?(attribute_list[i]!=-1)
{
return?false;
}
}
return?true;
}
int?Get_mostclass(int?d[][N+1]int?n)
{
int?num[N]={0};
int?i=0j=0;
int?t=0;
for?(i=0;i {
num[d[i][Attri_Count]]++;
}
for?(i=0;i {
if?(t {
t=num[i];
j=i;
}
}
return?j;
}
void?To_zero(int?a[N])
{
int?i;
for?(i=0;i<10;i++)
{
a[i]=0;
}
}
void?To_zero_double(double?a[N])
{
int?i;
for?(i=0;i<10;i++)
{
a[i]=0;
}
}
double?Compute_InfoD(int?each_class_number[]int?temp_count)//each_class_number[i]表示i類的元組數(shù)temp_count是總共的元組數(shù)
{
double?p[N];?//任意一個元組屬于某類的概率
double?InfoD=0;
int?i=0;
To_zero_double(p);
for?(i=0;i {
p[i]=(double)each_class_number[i]/temp_count;
}
for?(i=0;i {
if?(p[i]!=0)
{
InfoD?=?InfoD+p[i]*log(p[i])/log(2);
}
}
return?InfoD*(-1);
}
int?Attribute_selection_method(int?d[][N+1]int?tem_countint?attribute_list[])
{
double?InfoD[N];//各屬性的InfoInfo[Attri_Count]是類別的Info
double?att_value_info[N+1];//att_value_info[i]表示某個屬性在i取值上的Info
To_zero_double(InfoD);
To_zero_double(att_value_info);
int?di[M][N+1];//某一屬性在某一取值上的所有元組集合
int?di_count=0;//di包含的元組數(shù)
int?each_class_number[N]={0};//某個元組集合中每個類的元組數(shù)
Compute_each_class_number(dtem_counteach_class_number);//計算d中所有元組每個類的元組數(shù)
InfoD[Attri_Count]=Compute_InfoD(each_class_numbertem_count);//計算類別的Info
int?i=0j=0k=0;
// int?each_class_num[10];//某個屬性在某個取值上各類的元組個數(shù)
for?(i=0;i {
if?(attribute_list[i]!=-1)
{
for?(j=0;j {
for?(k=0;k {
if?(d[k][i]==j)
{
for?(int?l=0;l<=Attri_Count;l++)
{
di[di_count][l]=d[k][l];
}
di_count++;
}
}
To_zero(each_class_number);//將某個屬性在某個取值上各類的元組清零
Compute_each_class_number(didi_counteach_class_number);//計算集合d
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????233547??2009-12-30?20:23??decision_tree\Debug\decision_tree.exe
?????文件?????230660??2009-12-30?20:23??decision_tree\Debug\decision_tree.ilk
?????文件??????19149??2009-12-30?20:23??decision_tree\Debug\decision_tree.obj
?????文件?????418816??2009-12-30?20:23??decision_tree\Debug\decision_tree.pdb
?????文件??????41984??2009-12-30?20:23??decision_tree\Debug\vc60.idb
?????文件??????53248??2009-12-30?20:23??decision_tree\Debug\vc60.pdb
?????文件???????8863??2009-12-30?20:23??decision_tree\decision_tree.cpp
?????文件???????3485??2009-12-30?20:15??decision_tree\decision_tree.dsp
?????文件????????532??2009-12-30?20:17??decision_tree\decision_tree.dsw
?????文件??????41984??2009-12-30?20:24??decision_tree\decision_tree.ncb
?????文件??????48640??2009-12-30?20:24??decision_tree\decision_tree.opt
?????文件???????1283??2009-12-30?20:23??decision_tree\decision_tree.plg
?????文件????????377??2009-12-18?19:46??decision_tree\input.txt
?????文件????????974??2009-12-18?20:31??decision_tree\source_input.txt
?????文件?????????40??2009-12-30?18:21??decision_tree\source_test.txt
?????文件?????????16??2009-12-30?20:16??decision_tree\test.txt
?????文件????1794560??2010-04-16?16:51??decision_tree\決策樹.ppt
?????目錄??????????0??2009-12-30?20:26??decision_tree\Debug
?????目錄??????????0??2010-04-16?16:51??decision_tree
-----------?---------??----------?-----??----
??????????????2898158????????????????????19
- 上一篇:Dijskra算法 floyd算法
- 下一篇:心電信號檢測C語言編寫的程序
評論
共有 條評論