按关键词阅读: 实现 C 算法 ID3
*/#define ITMES 17/样本列数#define SAMPLES 435/样本行数#define state 3/类属的最大状态数/*lieshu:对生成各级的节点对应类属值存储 , 在store二维数组中 , storenm表示第n+1级节点(n=0为第一级根节点),下级节点总数可能达到state的n-1次方 , 那么m的值则必须大于state的n-1次方 , 也 。
9、就是指当样本列数为x1 , 那么在第x1级也就是样本的二叉树最后一级可能节点数为state的x1-1次方 , 因此storex1-1对应的列数必须大于state的x1-1次方 , 否则就可能使(从左向右看)后面的一些节点由于列数的限制而没存储 , 输出显示会在该级的下一级上出错 。
当数据集列数大于17不同时 , 请改动lieshu的值 , 至少为state的ITMES-2次方*/#define lieshu state*state*state*state*state*state*state*state*state*state*state*state*state*state*state/*用来存储节点对应的类属 , stor 。
10、e00存储根节点(第一级节点) , store10存储第二级的最左边节点. , store20存储第三级的最左边节点,如果store11存储的是节点 , 则其状态(不管其状态有没有state个)对应的下一级节点存储位置从store2state开始 , 给其准备了state个位置 , 也就是指 , 程序思路为:认为所有的节点都有state个节点 , 依次在state二维数组中存储 , 若实际程序运行中 , statex1x2为节点 , 为状态对应下级节点准备了state个位置 , 分别对应从statex1+1x2*state开始 , 到statex1+1x2*state+state-1为止 , 若statex1x2为节点状态(有没有state个 ,。
11、程序都认为有state个,状态也认为按类类属枚举类型排列的从左到右顺序排列)对应为节点 , 则存储该状态(假定为第一个)对应的节点的类属的数值(类属0对应0 , 类属1对应1.),存储在statex1+1x2*state位置 , 若statex1x2为节点状态(假定为第x个)对应为判决 , 则其对应位置statex1+1x2*state+x保持原值90 , 若节点状态达不到state个 , 其余位置保持原值90.*/#define h1 17/当数据集的列数大于17时 , store数据集的行数需要相应更改 , 比如列数为a17 , 则行数改为a就可int storeh1lieshu;
extern enum a1 yes1,n1 。
12、;
/枚举类型,集合类属0 , 此时默认了yes1对应0 , n1对应1extern enum a2 y2,n2;
/集合类属1 , 枚举类型 , 默认y2为0 , n2为1extern enum a3 y3,n3;
/集合类属2extern enum a4 y4,n4;
/集合类属3extern enum a5 y5,n5;
extern enum a6 y6,n6;
extern enum a7 y7,n7;
extern enum a8 y8,n8;
extern enum a9 y9,n9;
extern enum a10 y10,n10;
extern enum a11 y11,n11;
extern enum 。
13、 a12 y12,n12;
extern enum a13 y13,n13;
extern enum a14 y14,n14;
extern enum a15 y15,n15;
extern enum a16 y16,n16;
extern enum Class republican,democrat;
extern enum error1 xx;
/数据集若有没填的默认对应yes,当其没填的数据很多时对其的不同认可会导致二叉树相差较大/集合中的各个类属名 , 数据集不同时请对应更改char *p_1Array16=/集合中的各个类属名 , 数据集不同时请对应更改a1,a2,a3,a4,a5,a6,a 。
14、7,a8,a9,a10,a11,a12,a13,a14,a15,a16;
/*当不需要输出节点状态时 , 请屏蔽掉strITMESstate函数 , 同时屏蔽掉主程序中的状态输出语句*/类属对应的状态 , 由于为字符类型 , 即使有的类属状态不足state个 , 可补充空格作为状态 , 否则/程序输出节点对应的状态会出错 。
/*当数据集列数大于17时 , 请更改二维字符串数组str的行数*/char *str173=/类属对应的状态 , 由于为字符类型 , 即使有的类属状态不足state个 , 可补充空格作为状态 , 否则/程序输出节点对应的状态会出错 。
yes1,n1, ,y2,n2, ,y3,n3, ,y4,n4, ,y5,n5, ,y6 。
15、,n6, ,y7,n7, ,y8,n8, ,y9,n9, ,y10,n10, ,y11,n11, ,y12,n12, ,y13,n13, ,y14,n14, ,y15,n15, ,y16,n16, ,republican,democrat;
char SampleArraySAMPLESITMES = /样本数组 n1,y2,n3,y4,y5,y6,n7,n8,n9,y10,xx,y12,y13,y14,n15,y16,republican,n1,y2,n3,y4,y5,y6,n7,n8,n9,n10,n11,y12,y13,y14,n15,xx,republican,xx,y2,y3,xx,y 。
16、5,y6,n7,n8,n9,n10,y11,n12,y13,y14,n15,n16,democrat,n1,y2,y3,n4,xx,y6,n7,n8,n9,n10,y11,n12,y13,n14,n15,y16,democrat,yes1,y2,y3,n4,y5,y6,n7,n8,n9,n10,y11,xx,y13,y14,y15,y16,democrat,n1,y2,y3,n4,y5,y6,n7,n8,n9,n10,n11,n12,y13,y14,y15,y16,democrat,n1,y2,n3,y4,y5,y6,n7,n8,n9,n10,n11,n12,xx,y14,y15,y16,de 。
17、mocrat,n1,y2,n3,y4,y5,y6,n7,n8,n9,n10,n11,n12,y13,y14,xx,y16,republican,n1,y2,n3,y4,y5,y6,n7,n8,n9,n10,n11,y12,y13,y14,n15,y16,republican,yes1,y2,y3,n4,n5,n6,y7,y8,y9,n10,n11,n12,n13,n14,xx,xx,democrat,n1,y2,n3,y4,y5,n6,n7,n8,n9,n10,xx,xx,y13,y14,n15,n16,republican,n1,y2,n3,y4,y5,y6,n7,n8,n9,n10,y11 。
18、,xx,y13,y14,xx,xx,republican,n1,y2,y3,n4,n5,n6,y7,y8,y9,n10,n11,n12,y13,n14,xx,xx,democrat,yes1,y2,y3,n4,n5,y6,y7,y8,xx,y10,y11,xx,n13,n14,y15,xx,democrat,n1,y2,n3,y4,y5,y6,n7,n8,n9,n10,n11,y12,xx,xx,n15,xx,republican,n1,y2,n3,y4,y5,y6,n7,n8,n9,y10,n11,y12,y13,xx,n15,xx,republican,yes1,n2,y3,n4,n5,y 。
来源:(未知)
【学习资料】网址:/a/2021/0406/0021864141.html
标题:c|c++实现ID3算法( 二 )