资源简介
决策树分类器(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个文件信息
- 上一篇:C++面试题集锦非常详细
- 下一篇:QN8027 源码及资料 API资料
评论
共有 条评论