Code Monkey home page Code Monkey logo

lihang-statistical-learning-methods-code's Introduction

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

用Python手写实现(矩阵计算和导数计算使用轮子)了李航《统计学习方法》中绝大部分可以实现的内容。除极少数还未完成内容已列出外,其他内容已全部完成。

第02章 感知机

【算法 2.1】感知机学习算法的原始形式(原生Python实现)

【算法 2.2】感知机学习算法的对偶形式(原生Python实现)

第03章 k近邻法

【算法 3.1】k近邻计算(原生Python+sklearn的kd树实现)

简单交叉验证选择KNN分类器(原生Python+sklearn的KNN分类器)

S折交叉验证选择KNN分类器(原生Python+sklearn的KNN分类器)

线性扫描实现的k近邻计算(原生Python实现)

kd树(原生Python实现)-待优化

第04章 朴素贝叶斯法

【算法 4.1】朴素贝叶斯法(原生Python实现)

拉普拉斯平滑的朴素贝叶斯法(原生Python实现)

支持连续型特征的朴素贝叶斯法(直接调用sklearn实现)

第05章 决策树

【算法 5.2】ID3算法生成决策树-不剪枝(原生Python实现)

【算法 5.3】C4.5的生成算法-不剪枝(原生Python实现)

【算法 5.4】ID3算法生成决策树-剪枝(原生Python实现)

【算法 5.4】C4.5的生成算法-剪枝(原生Python实现)

CART回归树的生成(原生Python实现)-待实现

CART回归树(直接调用sklearn实现)

CART分类树的生成(原生Python实现)-待实现

CART分类树(直接调用sklearn实现)

第06章 逻辑斯谛回归与最大熵模型

【算法 6.1】IIS算法实现的最大熵模型(原生Python实现)

【算法 6.2】拟牛顿法实现的最大熵模型(原生Python实现)

第07章 支持向量机

字符串核函数的动态规划计算(原生Python实现)

【算法 7.5】SMO实现的线性&非线性支持向量机(原生Python实现)

线性支持向量机(直接调用sklearn实现)

非线性支持向量机(直接调用sklearn实现)

第08章 提升方法

【算法 8.1】AdaBoost算法(原生Python实现)

AdaBoost算法(直接调用sklearn实现)

【算法 8.3】回归问题的提升树算法(原生Python实现)

回归问题的提升树算法(直接调用sklearn实现)

第09章 EM算法及其推广

【算法 9.2】EM算法实现的高斯混合模型(原生Python实现)

高斯混合模型(直接调用sklearn实现)

第10章 隐马尔可夫模型

【算法 10.1】观测序列的生成(原生Python实现)

【算法 10.2】观测序列概率的前向算法(原生Python实现)

【算法 10.3】观测序列概率的后向算法(原生Python实现)

【算法 10.4】Baum-Welch算法实现的HMM模型学习(原生Python实现)

近似算法实现的HMM模型预测(原生Python实现)

【算法 10.5】维特比算法实现的HMM模型预测(原生Python实现)

第11章 条件随机场

已知模型计算条件概率(原生Python实现)

已知模型构造随机样本集(原生Python实现)

【算法 11.1】IIS算法实现的条件随机场模型(原生Python实现)

【算法 11.2】拟牛顿法实现的条件随机场模型(原生Python实现)

【算法 11.3】条件随机场预测的维特比算法(原生Python实现)

第14章 聚类方法

计算马哈拉诺比斯距离矩阵(原生Python+numpy矩阵计算实现)

计算相关系数矩阵(原生Python实现)

计算夹角余弦矩阵(原生Python实现)

计算类的样本散布矩阵与样本协方差矩阵(原生Python+numpy矩阵计算实现)

【算法 14.1】聚合聚类算法(原生Python实现)

【算法 14.2】k均值聚类算法(原生Python实现)

第15章 奇异值分解

紧奇异值分解(原生Python+numpy矩阵计算实现)

奇异值分解(直接调用numpy实现)

第16章 主成分分析

相关矩阵的特征值分解实现的主成分分析算法(原生Python实现)

【算法 16.1】数据矩阵的奇异值分解实现的主成分分析算法(原生Python+numpy矩阵计算实现)

第17章 潜在语义分析

依据词频构造单词文本矩阵(原生Python实现)

依据TFIDF构造单词文本矩阵(原生Python实现)

奇异值分解实现的潜在语义分析算法(原生Python+numpy矩阵计算实现)

【算法 17.1 (按式17.24和式17.25更新)】使用平方损失函数的非负矩阵分解算法(原生Python+numpy矩阵计算实现)

【算法 17.1 (按式17.26和式17.27更新)】使用散度损失函数的非负矩阵分解算法(原生Python+numpy矩阵计算实现)

第18章 概率潜在语义分析

【算法 18.1】EM算法实现的概率潜在语义模型(原生Python实现)

第19章 马尔可夫链蒙特卡罗法

常用概率分布(原生Python实现)

直接抽样法(原生Python实现)

【算法 19.1】接受-拒绝法(原生Python实现)

迭代法求离散有限状态马尔可夫链的平稳分布(原生Python+numpy矩阵计算实现)

计算马尔可夫链是否不可约(原生Python实现)

计算马尔可夫链是否有周期性(原生Python实现)

遍历定理求离散有限状态马尔可夫链的平稳分布(原生Python实现)

计算有限状态马尔可夫链是否可逆(原生Python实现)

【算法 19.2】Metropolis-Hastings算法(原生Python+numpy正态分布抽样实现)

单分量Metropolis-Hastings算法(原生Python+numpy正态分布抽样实现)

【算法 19.3】二元正态分布的吉布斯抽样算法(原生Python+numpy正态分布抽样实现)

第20章 潜在狄利克雷分配

【算法 20.2】吉布斯抽样算法实现的LDA模型(原生Python实现)

【算法 20.5】变分EM算法实现的LDA模型(原生Python实现)-待实现

变分EM算法实现的LDA模型(直接调用sklearn实现)

第21章 PageRank算法

迭代法计算基本定义的PageRank(原生Python+numpy矩阵计算实现)

【算法 21.1】迭代法计算一般定义的PageRank(原生Python+numpy矩阵计算实现)

【算法 21.2】幂法计算一般定义的PageRank(原生Python+numpy矩阵计算实现)

代数算法计算一般定义的PageRank(原生Python+numpy矩阵计算实现)

附录A 梯度下降法

梯度向量计算(原生Python+scipy导数计算实现)

基于黄金分割法的一维搜索(原生Python实现)

【算法 A.1(通常称为最速下降法)】最速下降法(原生Python+scipy导数计算实现)

梯度下降法(原生Python+scipy导数计算实现)

附录B 牛顿法和拟牛顿法

【算法 B.1】牛顿法(原生Python+scipy导数计算实现)

【算法 B.2】DFP算法的拟牛顿法(原生Python+scipy导数计算实现)

【算法 B.3】BFGS算法的拟牛顿法(原生Python+scipy导数计算实现)

使用Sherman-Morrison公式的BFGS算法的拟牛顿法(原生Python+scipy导数计算实现)

Broyden算法的拟牛顿法(原生Python+scipy导数计算实现)

如果你认为还是更多值得实现的内容,或认为有更好的实现方法,都欢迎反馈给我,我会慢慢优化的。

lihang-statistical-learning-methods-code's People

Contributors

changxingjiang avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.