机器学习神书之一的 PRML(模式识别与机器学习)是所有机器学习读者或希望系统理解机器学习的读者所必须了解的书籍。这本书系统而全面地论述了模式识别与机器学习领域的基本知识和最新发展,而该 GitHub 项目希望实现这本书的所有算法与概念,是非常优秀的资源与项目。

GitHub地址:https://github.com//ctgk/PRML

PRML 这本机器学习和模式识别领域中经典的教科书不仅反映了这些年该领域的最新发展,同时还全面而系统地介绍了模式识别和机器学习领域内详细的概念与基础。这本书主要针对高级本科生或研究生,以及人工智能相关的研究人员和从业人员。如果读者以前没有模式识别或机器学习相关的概念或知识,我们可能需要熟悉一些多元微积分和基本的线性代数等数学基础。此外,我们本科学的概率论与数理统计也需要复习一些,但这本书包含了对基本概率论的介绍,所以也可以借由这些章节进行复习。

PRML 适用于机器学习、统计学、计算机科学、信号处理、计算机视觉、数据挖掘和生物信息学等课程。它也为广大的读者提供了丰富的支持,例如书籍官网提供了 400 多个详细的练习资源,且根据难度分级。以下提供了该书籍的中英文资源,但我们还是建议读者查阅原版的英文书籍。此外,我们在 GitHub 上也能找到非常多的学习资源,例如中文翻译项目、Matlab 实现项目或各种读书笔记等。本文主要介绍了一个新的 GitHub 项目,该项目希望能实现 PRML 这本书籍的各种算法与概念。

PRML 实现地址:https://github.com//ctgk/PRML

PRML 书籍资源:http://pan.baidu.com/s/1skRgcjF 密码:cquc

该 GitHub 项目主要是希望使用 Python 代码实现在 Bishop 书籍「Pattern Recognition and Machine Learning」中介绍的算法。其中代码可以分为两部分,即实现各章节具体算法的 Python 代码文件和有助于理解各章节具体内容的 Jupyter Notebook 文件。在本文中,机器之心将简要介绍描述各章节的 Notebook,而各个算法的具体实现就需要读者朋友自行深入了解该项目了。

该 GitHub 项目所需要的编程语言为 Python 3,其它科学计算库还需要 NumPy 和 SciPy。若我们需要阅读各章节的 Notebook 文件,就需要安装 Jupyter,若希望在 Notebook 上绘制结果曲线或其他图表,我们需要安装 Matplotlib。此外,若我们希望馈送数据进行训练,还需要安装 sklearn 包。

在各章节具体算法的 Python 代码中,其罗列了聚类方法、特征抽取、线性模型、核方法、马尔科夫模型、概率分布模型、采样方法和神经网络方法等主题的实现。如下展示了线性模型文件夹下所包含的具体算法:

而对于 Notebook 部分来说,该项目展示了 PRML 各章节的辅助内容与实现代码,这一部分的内容目录如下:

  • ch1. 简介
  • ch2. 概率分布
  • ch3. 线性模型和回归
  • ch4. 线性模型和分类
  • ch5. 神经网络
  • ch6. 核方法
  • ch7. 稀疏核机器
  • ch9. 混合模型与 EM 算法
  • ch10. 近似推断
  • ch11. 采样方法
  • ch12. 连续隐变量

这些章节都是根据原书章节进行展示的,例如在简介章节中,该项目重点展示了多项式曲线拟合和贝叶斯曲线拟合。如在多项式拟合中,我们希望用以下形式的多项式拟合数据:

其中 M 为多项式的阶数,多项式系数 w_0, . . . , w_M 可以整体表示为向量 w。这些多项式系数可以通过梯度下降等方法调整多项式曲线拟合数据的情况。该 GitHub 项目先导入前面定义的具体模型,然后如下所示,再在 Notebook 部分展示模型的结果:

这和原书中的结果是非常相似的,我们甚至可以进一步调整不同的多项式复杂度以查看不同的拟合效果。因为增加了实践过程,这样的实现非常有助于我们理解原书中的概念与算法。此外,如果我们对算法的理解有什么疑惑,也可以查看具体的代码加深理解。

前面展示的案例是简介部分非常简单的多项式拟合方法,而对于更复杂一些的模型与方法,该项目也有非常好的实现与展示。例如在第七章中,PRML 主要介绍了稀疏核机器(Sparse Kernel Machines),包括最大间隔分类器、相关向量机(Relevance Vector Machines/RVM)等方法。如下所述,该项目对这一部分的内容也有非常好的辅助作用。

例如在最大间隔分类器或支持向量机中,我们假设训练数据集在特征空间中是线性可分的。因此根据定义,存在至少⼀个 参数 w 和 b 的选择方式,使得对于 t_n = +1 的点,线性模型 y(x) = w*φ(x) + b 都满足y(x_n) > 0,而对于 t_n = -1 的点,都有 y(x_n) < 0。因此对于所有训练数据点,我们有 t_n*y(x_n) > 0。

但是这种分类的情况会有很多,我们可以选择最稳妥的分类方法,即决策边界尽可能地处于所分类别的中间。支持向量机解决这个问题的方法是:引入间隔(margin)的概念,这 个概念被定义为决策边界与任意样本之间的最小距离,如原书第七章图 7.1 所示。

如左图所示,间隔被定义为决策边界与最近的数据点之间的垂直距离。最大化间隔会生成对决策边界的一个特定的选择,如右图所示。这个决策边界的位置由数据点的一个子集确定,被称为支持向量,用圆圈表示。

在该 GitHub 项目中,其展示的代码与绘图如下所示:

若我们应用和方法将这种大间隔分类的方法应用核技巧,将原本线性不可分的数据投影到线性线性可分的特征空间中,那么我们就能将这种具有大间隔或具有更强泛化能力的分类器推广到非线性分类中。如下展示了该项目这种扩展的支持向量机模型:

当然,本项目还有更多的模型与方法案例,我们可以按照 README 文件中所给出的 Notebook 文档加强对 PRML 这本权威教材的理解。该项目目前还在进一步完善,也希望各位 PRML 的读者能共同完善它,为我们自己提供更加优秀的学习资源。

机器学习标准教科书PRML的Python实现:最佳读书伴侣相关推荐

  1. 【干货】机器学习经典书PRML 最新 Python 3 代码实现,附最全 PRML 笔记视频学习资料...

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 将 Bishop 大神的 PRML 称为机器学习圣经一点也不为过,该书系统地介绍了 ...

  2. 书籍:Python机器学习蓝图第2版 Python Machine Learning Blueprints 2nd - 2019.pdf

    简介 通过使用scikit-learn,TensorFlow和Keras等库来应对日常问题,发现基于项目的方法来掌握机器学习概念 主要特点 •掌握Python的机器学习库,包括scikit-learn ...

  3. 机器学习算法一览(附python和R代码)

     机器学习算法一览(附python和R代码) 来源:数据观 时间:2016-04-19 15:20:43 作者:大数据文摘 "谷歌的无人车和机器人得到了很多关注,但我们真正的未来却在于能 ...

  4. 太赞了!开源下载机器学习经典书 PRML所有相关资料:中文译本,官方代码,课程视频,学习笔记...

    今天给大家推荐一本机器学习.深度学习的人都应该听说过一本经典教材:<Pattern Recognition and Machine Learning>,中文译名<模式识别与机器学习& ...

  5. python第三章上机实践_《机器学习Python实践》读书笔记-第三章

    <机器学习Python实践>,第三章,第一个机器学习项目 以往目录:橘猫吃不胖:<机器学习Python实践>读书笔记-第一章​zhuanlan.zhihu.com 书中介绍了一 ...

  6. id3决策树 鸢尾花 python_机器学习之分类回归树(python实现CART)

    机器学习之分类回归树(python实现CART) 之前有文章介绍过决策树(ID3).简单回顾一下:ID3每次选取最佳特征来分割数据,这个最佳特征的判断原则是通过信息增益来实现的.按照某种特征切分数据后 ...

  7. 我们为什么用 Go 编写机器学习架构,却不用 Python?

    "如果你有兴趣成为一名机器学习工程师,那么必须熟练掌握Python--但是,如果你对机器学习的基础架构感兴趣,则应该认真考虑Go." 作者 | Caleb Kaiser 译者 |  ...

  8. 30个python的最佳实践,快去试试吧!

    30 个 Python 的最佳实践.小贴士和技巧 原:作者 | Erik-Jan van Baaren 原:译者 | 弯月,责编 | 屠敏 以下为译文: 1. Python 版本 在此想提醒各位:自2 ...

  9. 基于“机器学习”的智能聊天机器人---python实现(1)

    本博文以自己课程设计为依托,介绍如何利用python语言编程实现基于"机器学习"的智能聊天机器人.由于本项目是自己首次接触python以及利用计算机编程实现小型项目,中途遇到诸多问 ...

  10. 新书推荐 |《机器学习即服务:将Python机器学习创意快速转变为云端Web应用程序》...

    新书推荐 <机器学习即服务:将Python机器学习创意快速转变为云端Web应用程序> 点击上图了解及购买 谷歌云和Salesforce首选合作伙伴SpringML数据科学副总裁领衔撰写,讲 ...

最新文章

  1. redis如何实现分布式锁?
  2. 我最喜欢的几个苏州美食
  3. ubuntu 为用户添加组
  4. 云游戏之真心话:一切才刚刚开始 | 对话南京大学副教授马展
  5. SAP CRM IBASE头部字段读取的具体实现
  6. 软件开发有哪些规范和标准_深圳APP软件开发的流程是什么?
  7. AcWing 756. 蛇形矩阵
  8. 算法题:输入aaaabbbcccccc输出a4b3c6。
  9. mysql 查看表v空间自增涨_mysql文件结构及InnoDB引擎表空间整理
  10. Idea中在代码顶部添加自定义作者和时间
  11. MyEclipse 2017 CI 9 发布(附下载)
  12. java array和数组_Java:数组和Arrays类的使用
  13. 给Silverlight三十分钟
  14. 服务器主板型号详解,服务器电脑主板科普:各种接口介绍,如何选?
  15. 品质qc工程图_QC工程图 (品管)
  16. uploadify文件上传插件使用教程
  17. C++、Java、JavaScript中回调的用法
  18. 读取、回收和重用:使用 Excel、XML 和 Java 技术轻松搞定报告,第 2 部分
  19. 手机网页图片自适应大小 background-size css 图片全屏 背景尺寸设置
  20. 有关数据库的一级、二级、三级封锁协议

热门文章

  1. lopatkin俄大神Windows精简版系统安装注意事项及恢复OneDrive
  2. Vensim系统建模论文阅读-Information diffusion through social networks: The case of an online petition
  3. 最火前端Web组态软件(可视化)
  4. pdf安装 adobe acrobat reader DC
  5. 局域网交换机(Lan Switch)
  6. 移远EC20中SD卡无法开机后自动识别是否拔插
  7. 工具类网站推荐:实用工具汇总共30000个,速收藏
  8. 有消息推送服务器的手机厂家,又一家手机厂商完成统一推送服务适配
  9. CSDN博客 不登录不能复制粘贴
  10. 2020软考高级系统分析师,你想知道的全在这