• 大小: 1.61MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-21
  • 语言: C/C++
  • 标签: 决策树  

资源简介

关于C语言的决策树 里面有c语言的源代码 还有一些简单的介绍

资源截图

代码片段和文件信息

#include “stdio.h“
#include “malloc.h“
#include “string.h“
#include “math.h“

#define M 100 //样本数据条数最大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];//假设每个属性最多有10个值
}T_Node;

int Attri_Count=0;//实际属性数目
int total_att_vavle[N+1];//每个属性实际的取值个数最后一个为类的数量

void Compute_each_class_number(int d[][N+1]int tem_countint each_class_nember[])//计算每个类的元组数
{
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类的元组数temp_count是总共的元组数
{

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包含的元组数

int each_class_number[N]={0};//某个元组集合中每个类的元组数

Compute_each_class_number(dtem_counteach_class_number);//计算d中所有元组每个类的元组数

InfoD[Attri_Count]=Compute_InfoD(each_class_numbertem_count);//计算类别的Info

int i=0j=0k=0;
// int each_class_num[10];//某个属性在某个取值上各类的元组个数

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


评论

共有 条评论