机器学习实战python3 决策树ID3】的更多相关文章

代码及数据:https://github.com/zle1992/MachineLearningInAction 决策树 优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据. 缺点:可能会产生过度匹配问题. 适用数据类型:数值型和标称型. 创建分支的伪代码函数createBranch()如下所示:检测数据集中的每个子项是否属于同一分类:if so return 类标签; Else 寻找划分数据集的最好特征 划分数据集 创建分支节点 for 每个划分的子集 调用函…
摘要:本部分对决策树几种算法的原理及算法过程进行简要介绍,然后编写程序实现决策树算法,再根据Python自带机器学习包实现决策树算法,最后从决策树引申至集成学习相关内容. 1.决策树 决策树作为一种常见的有监督学习算法,在机器学习领域通常有着不错的表现,决策树在生活中决策去做某件事时,会根据自己的经验考虑到多种因素,那么在程序逻辑中使用if~else的堆叠,决定最终结果的过程其实就算是决策树的一种体现,如下图(举个不太恰当的例子).学术一点来说,决策树就是根据以往发生的事的概率,来评估风险,作出…
台大机器技法跟基石都看完了,但是没有编程一直,现在打算结合周志华的<机器学习>,撸一遍机器学习实战, 原书是python2 的,但是本人感觉python3更好用一些,所以打算用python3 写一遍.python3 与python2 不同的地方会在程序中标出. 代码及数据:https://github.com/zle1992/MachineLearningInAction k-近邻算法 优点:精度高.对异常值不敏感.无数据输入假定. 缺点:计算复杂度高.空间复杂度高.对K的取值敏感!!! 适用…
错误原因:pickle模块存储的是二进制字节码,需要以二进制的方式进行读写 1. 报错一:TypeError: write() argument must be str, not bytes 将决策树写入磁盘的代码如下: def storeTree(inputTree, filename): import pickle fw = open(filename, 'w') pickle.dump(inputTree, fw) fw.close() 改正后代码: fw = open(filename,…
摘要:上一节对决策树的基本原理进行了梳理,本节主要根据其原理做一个逻辑的实现,然后调用sklearn的包实现决策树分类. 这里主要是对分类树的决策进行实现,算法采用ID3,即以信息增益作为划分标准进行. 首先计算数据集的信息熵,代码如下: 1 import math 2 import numpy as np 3 4 5 def calcShannonEnt(data): 6 num = len(data) 7 # 保存每个类别的数目 8 labelCounts = {} 9 # 每一个样本 10…
上一节对XGBoost算法的原理和过程进行了描述,XGBoost在算法优化方面主要在原损失函数中加入了正则项,同时将损失函数的二阶泰勒展开近似展开代替残差(事实上在GBDT中叶子结点的最优值求解也是使用的二阶泰勒展开(详细上面Tips有讲解),但XGBoost在求解决策树和最优值都用到了),同时在求解过程中将两步优化(求解最优决策树和叶子节点最优输出值)合并成为一步.本节主要对XGBoot进行实现并调参. XGBoost框架及参数 XGBoost原生框架与sklearn风格框架 XGBoost有…
CART生成 CART假设决策树是二叉树,内部结点特征的取值为“是”和“否”,左分支是取值为“是”的分支,右分支是取值为“否”的分支.这样的决策树等价于递归地二分每个特征,将输入空间即特征空间划分为有限个单元,并在这些单元上确定预测的概率分布,也就是在输入给定的条件下输出的条件概率分布. CART算法由以下两步组成: 决策树生成:基于训练数据集生成决策树,生成的决策树要尽量大: 决策树剪枝:用验证数据集对已生成的树进行剪枝并选择最优子树,这时损失函数最小作为剪枝的标准. CART决策树的生成就是…
本打算将GBDT和XGBoost放在一起,但由于涉及内容较多,且两个都是比较重要的算法,这里主要先看GBDT算法,XGBoost是GBDT算法的优化和变种,等熟悉GBDT后再去理解XGBoost就会容易的多 GBDT算法原理 GBDT(Gradient Boosting Decision Tree)算法 前面说到,提升树是每次训练将上一次训练的残差作为本次训练的样本,找出最优的决策树的过程,然后将所有模型进行叠加的过程.同样,GBDT也是一种前向加法算法模型,不同于提升树的是,GBDT每次将残差…
XGBoost是陈天奇等人开发的一个开源项目,前文提到XGBoost是GBDT的一种提升和变异形式,其本质上还是一个GBDT,但力争将GBDT的性能发挥到极致,因此这里的X指代的"Extreme"的意思.XGBoost通过在算法和工程上进行了改进,使其在性能和精度上都得到了很大的提升,也成为了Kaggle比赛和工程应用的大热门.XGBoost是大规模并行的BoostingTree的工具,比通常的工具包快10倍以上,是目前最好的开源BoostingTree的工具包,在工业界规模方面,XG…
一. 使用k近邻算法改进约会网站的配对效果 k-近邻算法的一般流程: 收集数据:可以使用爬虫进行数据的收集,也可以使用第三方提供的免费或收费的数据.一般来讲,数据放在txt文本文件中,按照一定的格式进行存储,便于解析及处理. 准备数据:使用Python解析.预处理数据. 分析数据:可以使用很多方法对数据进行分析,例如使用Matplotlib将数据可视化. 测试算法:计算错误率. 使用算法:错误率在可接受范围内,就可以运行k-近邻算法进行分类. 实战内容: 海伦女士一直使用在线约会网站寻找适合自己…