目录
1、id3简介与补充
看id3算法将近一周左右了,其实从数学过程上去理解就只那么一天,然后从哲学源头去理解花了一二天,最后写成程序前前后后用时一周左右。期间还包括用二三天时间学习matplotlib,自绘决策树,做数据可视化。
所谓,穷则独善其身,达则兼济天下。以后在名不正的情况下,就不过多地施其职,不做过多分享了。总之,就如大家所说,id3其实很简单,稍复杂一点的是在代码细节上的落实。
关于id3的介绍,太多太多,我这里就补充几点哲学上的内在逻辑:
id3往小说是在分类,往大说是一个决策结果、一个概念形成过程;
一个标签的成立取决于若干相关特征,id3就是基于分析这些特征在影响标签成立的重要性方面进行的;
进行某个判断前后的信息熵之差体现这个判断依据对标签成立的重要性;
越重要的特征越早判断。
2、实例与数据可视化
#数据:
#FIELDS=['Outlook','Temperature','Humidity','Windy','Play']
#S=[
# ['sunny','hot','high','false','no'],
# ['sunny','hot','high','true','no'],
# ['overcast','hot','high','false','yes'],
# ['rain','mild','high','false','yes'],
# ['rain','cool','normal','false','yes'],
# ['rain','cool','normal','true','no'],
# ['overcast','cool','normal','true','yes'],
# ['sunny','mild','high','false','no'],
# ['sunny','cool','normal','false','yes'],
# ['rain','mild','normal','false','yes'],
# ['sunny','mild','normal','true','yes'],
# ['overcast','mild','high','true','yes'],
# ['overcast','hot','normal','false','yes'],
# ['rain','mild','high','true','no']
# ]
效果:
#数据:
#年龄,收入,学生,信贷率,买电脑
#age,income,student,credit_rating,buys_computer
#youth,high,no,fair,no
#youth,high,no,excellent,no
#middle_aged,high,no,fair,yes
#senior,medium,no,fair,yes
#senior,low,yes,fair,yes
#senior,low,yes,excellent,no
#middle_aged,low,yes,excellent,yes
#youth,medium,no,fair,no
#youth,low,yes,fair,yes
#senior,medium,yes,fair,yes
#youth,medium,yes,excellent,yes
#middle_aged,medium,no,excellent,yes
#middle_aged,high,yes,fair,yes
#senior,medium,no,excellent,no
PS:这个credit_rating我还真一时不知道该叫它什么好。
效果:
其实还远没有结束,我还只做到id3算法实现的程序准确性与数据可视化这一层,既还没用于学习训练,也没用于算法自身准确度评价,学习结果输出应用也还没做,以及后面的更高级算法都还没涉足,看来还是要继续学习。只不过,以后的这些都要简单、方便很多很多。