目录

前言

手写实现李航《统计学习方法》书中全部算法

示例

内容完整目录

第二章 感知机:

第三章 K近邻:

第四章 朴素贝叶斯:

第五章 决策树:

第六章 逻辑斯蒂回归与最大熵模型:

第七章 支持向量机:

第八章 提升方法:

第九章 EM算法及其推广:

第十章 隐马尔可夫模型:

代码下载


前言

"轻薄"但不简单,内容涵盖了机器学习大多数常见的算法。至2012年出版以来,印刷不断,好评不断。截止2020年5月14日,该书在豆瓣上拿到 9.0 的评分(相当之高)。

比如面试中几个高频的问题:线性回归与逻辑回归(LR)的区别、LR 与 SVM的区别和联系、SVM原理等

手写实现李航《统计学习方法》书中全部算法

项目作者:Dod-o

项目链接:https://github.com/zxy14120448/Statistical-Learning-Method_Code

推荐这个算法复现项目,原因有三:

  1. 仅用Python基本库即可实现
  2. 详细的博客介绍
  3. 详细的代码中文注解

示例

详细的代码中文注解

这一部分相信是很多同学非常非常看重的。代码就是"生产力",带中文注解的代码就是"超级生产力"。

这里截几个代码段,大家可以预览感受一下

class SVM:'''SVM类'''def __init__(self, trainDataList, trainLabelList, sigma = 10, C = 200, toler = 0.001):'''SVM相关参数初始化:param trainDataList:训练数据集:param trainLabelList: 训练测试集:param sigma: 高斯核中分母的σ:param C:软间隔中的惩罚参数:param toler:松弛变量注:关于这些参数的初始值:参数的初始值大部分没有强要求,请参照书中给的参考,例如C是调和间隔与误分类点的系数,在选值时通过经验法依据结果来动态调整。(本程序中的初始值参考于《机器学习实战》中SVM章节,因为书中也使用了该数据集,只不过抽取了很少的数据测试。参数在一定程度上有参考性。)如果使用的是其他数据集且结果不太好,强烈建议重新通读所有参数所在的公式进行修改。例如在核函数中σ的值高度依赖样本特征值范围,特征值范围较大时若不相应增大σ会导致所有计算得到的核函数均为0'''self.trainDataMat = np.mat(trainDataList)       #训练数据集self.trainLabelMat = np.mat(trainLabelList).T   #训练标签集,为了方便后续运算提前做了转置,变为列向量self.m, self.n = np.shape(self.trainDataMat)    #m:训练集数量    n:样本特征数目self.sigma = sigma                              #高斯核分母中的σself.C = C                                      #惩罚参数self.toler = toler                              #松弛变量self.k = self.calcKernel()                      #核函数(初始化时提前计算)self.b = 0                                      #SVM中的偏置bself.alpha = [0] * self.trainDataMat.shape[0]   # α 长度为训练集数目self.E = [0 * self.trainLabelMat[i, 0] for i in range(self.trainLabelMat.shape[0])]     #SMO运算过程中的Eiself.supportVecIndex = []def createBosstingTree(trainDataList, trainLabelList, treeNum = 50):'''创建提升树创建算法依据“8.1.2 AdaBoost算法” 算法8.1:param trainDataList:训练数据集:param trainLabelList: 训练测试集:param treeNum: 树的层数:return: 提升树'''#将数据和标签转化为数组形式trainDataArr = np.array(trainDataList)trainLabelArr = np.array(trainLabelList)#没增加一层数后,当前最终预测结果列表finallpredict = [0] * len(trainLabelArr)#获得训练集数量以及特征个数m, n = np.shape(trainDataArr)

内容完整目录

第二章 感知机:

博客:统计学习方法|感知机原理剖析及实现
实现:perceptron/perceptron_dichotomy.py

第三章 K近邻:

博客:统计学习方法|K近邻原理剖析及实现
实现:KNN/KNN.py

第四章 朴素贝叶斯:

博客:统计学习方法|朴素贝叶斯原理剖析及实现
实现:NaiveBayes/NaiveBayes.py

第五章 决策树:

博客:统计学习方法|决策树原理剖析及实现
实现:DecisionTree/DecisionTree.py

第六章 逻辑斯蒂回归与最大熵模型:

博客:逻辑斯蒂回归:统计学习方法|逻辑斯蒂原理剖析及实现
博客:最大熵:统计学习方法|最大熵原理剖析及实现

实现逻辑斯蒂回归:

Logistic_and_maximum_entropy_models/logisticRegression.py
实现最大熵:Logistic_and_maximum_entropy_models/maxEntropy.py

第七章 支持向量机:

博客:统计学习方法|支持向量机(SVM)原理剖析及实现
实现:SVM/SVM.py

第八章 提升方法:

实现:AdaBoost/AdaBoost.py

第九章 EM算法及其推广:

实现:EM/EM.py

第十章 隐马尔可夫模型:

实现:HMM/HMM.py

代码下载

为了方便下载,上述代码均已经打包好

链接: https://pan.baidu.com/s/1LX3ynIc3vl_7zCSjf3Kk0g
提取码:kt50

《统计学习方法》全部算法相关推荐

  1. 重磅开源!所有的李航老师《统计学习方法》算法代码实现!!!

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 超有料的仓库项目资源---<统计学习方法>代码 李航老师的<统计 ...

  2. 《统计学习方法》算法学习笔记(四)之 决策树(上)

    决策树 总述 决策树是一种基本的分类与回归方法,本节主要讨论用于分类的决策树.决策树呈树状结构,在分类问题中,表示基于特征对实例进行分类的过程.它可以认为是if-then规则的集合,也可以认为是定义在 ...

  3. 李航统计学习方法EM算法三枚硬币例子Q函数推导

    具体推导如下: 上面推导省略了第i次迭代的i的标记 当得到上式以后,可以参考 http://www.cnblogs.com/Determined22/p/5776791.html 来继续一下推导 当然 ...

  4. 09_期望极大法EM1_统计学习方法

    文章目录 一.EM算法的引入 1.极大似然估计 2.EM入场 二.EM算法推导 1.Jensen不等式 2.EM推导过程 (1)统计学习方法EM推导 (2)Andrew NG关于EM算法的推导 3.统 ...

  5. 统计学习方法(一)——统计学习方法概论

    文章作者:Tyan 博客:noahsnail.com  |  CSDN  |  简书 1. 统计学习方法概论 本文是统计学习方法(李航)第一章的学习总结. 1.1 统计学习 1.统计学习的特点 统计学 ...

  6. 开源!北大研究生把《统计学习方法》书中全部算法都实现了!

    来源:开源最前线(ID:OpenSourceTop) 一个好的开源项目分享给大家. <统计学习方法>可以说是机器学习的入门宝典,许多机器学习培训班.互联网企业的面试.笔试题目,很多都参考这 ...

  7. 手写实现李航《统计学习方法》书中全部算法

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来源:专知 [导读]Dod-o的手写实现李航<统计学习方法>书中全部算法, ...

  8. 统计学习方法笔记(一)-k近邻算法原理及python实现

    k近邻法 k近邻算法 算法原理 距离度量 距离度量python实现 k近邻算法实现 案例地址 k近邻算法 kkk近邻法(kkk-NN)是一种基本分类和回归方法. 算法原理 输入:训练集 T={(x1, ...

  9. 机器学习初学者手抄本:数学基础、机器学习经典算法、统计学习方法等

    机器学习怎么学?当然是系统地学习了.没有时间这么办呢?利用碎片时间学习!很多人一天要花 2 个小时通勤,通勤路上有很多时间看手机.于是我把一些机器学习的基础知识做成了在线的机器学习手册,只需打开微信收 ...

  10. 复现经典:《统计学习方法》第21章 PageRank算法

    第21章 PageRank算法 本文是李航老师的<统计学习方法>一书的代码复现.作者:黄海广 备注:代码都可以在github中下载.我将陆续将代码发布在公众号"机器学习初学者&q ...

最新文章

  1. FPGA之道(59)时空变换之时域优化
  2. 如何使用Node.js解析JSON?
  3. 在Linux系统下如何运行notes客户端
  4. gitolite 踩坑记
  5. Angular浅入深出系列 - 写在前面
  6. 用vue.js学习es6(四):Symbol类型
  7. 控制方法只有相应权限才可执行
  8. 客流分析江湖争端再起,新旧势力谁更胜一筹?
  9. 不能错过的linux驱动开发的经典书籍推荐
  10. 【解决方案修复谷歌翻译 Windows、macOS】谷歌翻译退出了中国市场不能用了
  11. 硕思闪客精灵怎么导出flash(gif)动画,flash游戏源文件疑难问题解答(注册码)
  12. 苹果手表连接是什么原理_为什么苹果手表是最具潜力的苹果产品
  13. 现代软件工程 第一章 【概论】练习与讨论 第10题 邓杰
  14. td nowrap 属性 中多个input 不换行 水平排列
  15. c实用技巧:纯c对于excel数据表的处理
  16. 嵌入式系统的数据结构与算法
  17. Ubuntu 启动盘制作教程
  18. 17joys用户管理 添加用户
  19. 人人商城中{ifp }函数的意思
  20. 【iOS】对于iPhone5分辨率兼容性调整问题

热门文章

  1. linux 拼图游戏,2020经典宝石拼图
  2. 第四章 ContextCapture 19 空三控制点平差
  3. 使用html,css实现简单的导航栏
  4. 事物的特点:(一句话让你知道什么是事物)?
  5. JavaScript 播放多条音频与延迟播放
  6. VS2008里的代码如何格式化?
  7. 模糊控制在matlab中常见的疑难问题及模糊逻辑工具箱的使用
  8. 一分钟之内搭建自己的直播服务器?
  9. Windows下Debug模式的检测和OutputDebugString
  10. 兔将十年大作《赤狐书生》特效解析:青蛙精篇