• 大小: 1.64MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-11-14
  • 语言: C/C++
  • 标签: ID3算法  

资源简介

决策树分类器(ID3算法)C语言,可直接运行

资源截图

代码片段和文件信息

#include “stdio.h“
#include “stdlib.h“
#include “math.h“
#include “string.h“
#include “vector“
using namespace std;

#define INF 99
#define dimNum 5  //样本维数
typedef vector intVector;
vector getFileInf(char *File);   //获取样本
void ID3(vector sample);   //ID3决策树开始引擎
intVector getYESorNOnum(vector sample);   //获取去和不去的数量
vector getEntropy(vector sample);  //获取各信息熵
int getGainLaber(double HD vector Entropy int num);  //获取增益值最大处的位置
void Iter(vector sample int laber);  //开始迭代
void output();  //路径输出
void save();  //保存路径

struct pathInf
{
int att;    //属性类别
int num;    //使用的属性
int ID;     //调用的顺序
int r;      //结果
};

pathInf path[dimNum];
int ID = 1;
int result;
typedef vector pathVector;
vector savePath;

void main()
{
int i;
vector sample;
char *File = “样本.txt“;

//初始化路径
for(i=0; i {
path[i].att = INF;
path[i].num = INF;
path[i].ID = INF;
}

printf(“天气  温度  湿度  风力   Y/N  (注:99表示未考虑。)\n“);
sample = getFileInf(File);
ID3(sample);

output();

}


//ID3决策树开始引擎
void ID3(vector sample)
{
int i j;
intVector yesORno = getYESorNOnum(sample);
vector Entropy;
double HD_Entropy;

if(yesORno.at(0)==0)
{
printf(“样本全为不去!!!\n“);
exit(0);
}

if(yesORno.at(1)==0)
{
printf(“样本全为去!!!\n“);
exit(0);
}

HD_Entropy = -((double)yesORno.at(0)/sample.size()) *log10((double)yesORno.at(0)/sample.size())/log10(2) 
    - ((double)yesORno.at(1)/sample.size()) *log10((double)yesORno.at(1)/sample.size())/log10(2);


Entropy = getEntropy(sample);

int laber = getGainLaber(HD_Entropy Entropy 0);   //最大增益值所对应的列

Iter(sample laber);  //开始迭代

}


//迭代函数
void Iter(vector sample int laber)
{
int i j;
intVector temp;
intVector YorN;
intVector yesORno = getYESorNOnum(sample);
vector Entropy;
double HD_Entropy;
vector samp0 samp1 samp2;
int laber0;

if(yesORno[0]==0)
{
result = 0;
save();
return;
}

if(yesORno[1]==0)
{
result = 1;
save();
return;
}


//进行分支
for(i=0; i {
if (sample[i][laber]==0)
{
temp = sample[i];
temp[laber] = INF;
samp0.push_back(temp);
}

if (sample[i][laber]==1)
{
temp = sample[i];
temp[laber] = INF;
samp1.push_back(temp);
}

if (sample[i][laber]==2)
{
temp = sample[i];
temp[laber] = INF;
samp2.push_back(temp);
}
}

if(samp0.size()!=0)
{
YorN = getYESorNOnum(samp0);

HD_Entropy = -((double)YorN.at(0)/samp0.size()) *log10((double)YorN.at(0)/samp0.size())/log10(2) 
- ((double)YorN.at(1)/samp0.size()) *log10((double)YorN.at(1)/samp0.size())/log10(2);


Entropy = getEntropy(samp0);

laber0 = getGainLaber(HD_Entropy Entropy 0);   //最大增益值所对应的列

Iter(samp0 laber0);
}

if(samp1.si

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-07-29 11:00  决策树分类器(ID3算法)\
     目录           0  2015-07-29 11:00  决策树分类器(ID3算法)\Debug\
     文件       66560  2015-07-29 10:51  决策树分类器(ID3算法)\Debug\vc60.idb
     文件      110592  2015-07-29 10:51  决策树分类器(ID3算法)\Debug\vc60.pdb
     文件      197449  2015-07-29 10:51  决策树分类器(ID3算法)\Debug\决策树.obj
     文件      286803  2015-07-29 10:51  决策树分类器(ID3算法)\Debug\决策树分类器.exe
     文件      318364  2015-07-29 10:51  决策树分类器(ID3算法)\Debug\决策树分类器.ilk
     文件     1155912  2015-07-28 16:41  决策树分类器(ID3算法)\Debug\决策树分类器.pch
     文件      885760  2015-07-29 10:51  决策树分类器(ID3算法)\Debug\决策树分类器.pdb
     文件        9125  2015-07-29 10:51  决策树分类器(ID3算法)\决策树.cpp
     目录           0  2015-07-29 11:00  决策树分类器(ID3算法)\决策树代码过程\
     目录           0  2015-07-29 11:00  决策树分类器(ID3算法)\决策树代码过程\决策树分类器(原始)\
     目录           0  2015-07-29 11:00  决策树分类器(ID3算法)\决策树代码过程\决策树分类器(原始)\Debug\
     文件       66560  2015-07-28 14:53  决策树分类器(ID3算法)\决策树代码过程\决策树分类器(原始)\Debug\vc60.idb
     文件       94208  2015-07-28 14:53  决策树分类器(ID3算法)\决策树代码过程\决策树分类器(原始)\Debug\vc60.pdb
     文件      149615  2015-07-28 14:53  决策树分类器(ID3算法)\决策树代码过程\决策树分类器(原始)\Debug\决策树.obj
     文件      274500  2015-07-28 14:53  决策树分类器(ID3算法)\决策树代码过程\决策树分类器(原始)\Debug\决策树分类器.exe
     文件      393776  2015-07-28 14:53  决策树分类器(ID3算法)\决策树代码过程\决策树分类器(原始)\Debug\决策树分类器.ilk
     文件      230340  2015-07-28 14:41  决策树分类器(ID3算法)\决策树代码过程\决策树分类器(原始)\Debug\决策树分类器.pch
     文件      689152  2015-07-28 14:53  决策树分类器(ID3算法)\决策树代码过程\决策树分类器(原始)\Debug\决策树分类器.pdb
     文件        7817  2015-07-28 14:53  决策树分类器(ID3算法)\决策树代码过程\决策树分类器(原始)\决策树.cpp
     文件        4352  2015-07-28 13:41  决策树分类器(ID3算法)\决策树代码过程\决策树分类器(原始)\决策树分类器.dsp
     文件         532  2015-07-28 09:39  决策树分类器(ID3算法)\决策树代码过程\决策树分类器(原始)\决策树分类器.dsw
     文件       41984  2015-07-28 16:01  决策树分类器(ID3算法)\决策树代码过程\决策树分类器(原始)\决策树分类器.ncb
     文件       48640  2015-07-28 16:01  决策树分类器(ID3算法)\决策树代码过程\决策树分类器(原始)\决策树分类器.opt
     文件         919  2015-07-28 14:53  决策树分类器(ID3算法)\决策树代码过程\决策树分类器(原始)\决策树分类器.plg
     文件         152  2015-07-28 12:49  决策树分类器(ID3算法)\决策树代码过程\决策树分类器(原始)\样本.txt
     目录           0  2015-07-29 11:00  决策树分类器(ID3算法)\决策树代码过程\决策树(结构体)\
     目录           0  2015-07-29 11:01  决策树分类器(ID3算法)\决策树代码过程\决策树(结构体)\Debug\
     文件       66560  2015-07-28 19:25  决策树分类器(ID3算法)\决策树代码过程\决策树(结构体)\Debug\vc60.idb
     文件       94208  2015-07-28 19:25  决策树分类器(ID3算法)\决策树代码过程\决策树(结构体)\Debug\vc60.pdb
............此处省略17个文件信息

评论

共有 条评论