
决策树(二)—— ID3和C4.5
发布日期:2021-05-07 13:47:45
浏览次数:7
分类:原创文章
本文共 1259 字,大约阅读时间需要 4 分钟。
ID3和C4.5
决策树
看这张图就明白了。
简单来说就是根据特征构造一棵树,叶子结点代表了分类的结果,叶子结点到根节点的路径代表了不同特征的组合。
也就是说我们认为不同特征的组合造成了分类结果的不同。
ID3
那我们怎么构造这棵树呢?把哪些特征放在上面哪些放在下面呢?
上一篇博客提到了信息熵的相关知识。
ID3算法就是根据信息增益来排序的。
我们自然是把最重要的信息放在上面,这里的重要意味着有了这个信息,结果的不确定性就会小很多。
信息确定前后信息熵的变化称为信息增益,某特征的信息增益越大,也就说明这一特征与结果的相关性越高,对于分类的重要性也就越高了。
C4.5
不同于ID3,C4.5使用信息增益比来对特征进行排序。在上上一篇博客中也有对于信息增益比的介绍,这里不做赘述。
简单来说C4.5避免了特征多叉带来的信息增益过大问题,使用某特征单位熵下的信息增益来衡量特征的优先级。
sklearn的实现
sklearn默认使用CART算法,我们要用熵来算的话,把criterion='entropy’即可。这里的entropy代表用熵来算。
import csvfrom sklearn import treefrom sklearn import preprocessingfrom sklearn.feature_extraction import DictVectorizer# 读数据Dtree = open('../data/AllElectronics.csv','r')reader = csv.reader(Dtree)headers = reader.__next__()featureList = []labelList = []for row in reader: labelList.append(row[-1]) rowDic = { } for i in range(1,len(row)-1): rowDic[headers[i]] = row[i] featureList.append(rowDic)# 把数据转化成01表示vec = DictVectorizer()x_data = vec.fit_transform(featureList).toarray()# print(vec.get_feature_names())# 将标签转化为01表示lb = preprocessing.LabelBinarizer()y_data = lb.fit_transform(labelList)# 创建决策树模型model = tree.DecisionTreeClassifier(criterion='entropy')model.fit(x_data,y_data)prediction = model.predict(x_data)print("预测值:",prediction)print("实际值:",y_data.T)
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年03月18日 02时21分46秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
二叉树 简单实现 问题解决
2019-03-04
第2章 可行性研究
2019-03-04
python入门——运算符
2019-03-04
【springmvc】传值的几种方式&&postman接口测试
2019-03-04
泳道图简介
2019-03-04
Tomcat6中web项目部署路径webapps和wtpwebapps的区别
2019-03-04
Java判断字符串是否为金额
2019-03-04
CodeCombat代码全记录(Python学习利器)--安息之云山峰(第四章)代码9
2019-03-04
nginx配置文件nginx.conf详细讲解(2)
2019-03-04
nginx配置文件nginx.conf详细讲解(4)--终结篇
2019-03-04
某公司运维岗位笔试题8
2019-03-04
一个简单的shell脚本:weblogic日志按天生成(日志压缩)
2019-03-04
skyfans之每天一个Liunx命令系列之二:uptime
2019-03-04
js中的文档碎片的理解与使用
2019-03-04
Kubernetes十三--Pod定义文件内容详解
2019-03-04
3、69道Spring面试题及答案
2019-03-04
普歌- LRF-(简单易懂)笔记本电脑USB接口案例 接口多态(向下转型)
2019-03-04
Java中如何构建树结构
2019-03-04
若依启动流程
2019-03-04