《统计学习方法》全部算法

目录

前言

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

示例

内容完整目录

第二章 感知机:

第三章 K近邻:

第四章 朴素贝叶斯:

第五章 决策树:

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

第七章 支持向量机:

第八章 提升方法:

第九章 EM算法及其推广:

第十章 隐马尔可夫模型:

代码下载


前言

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

《统计学习方法》全部算法_第1张图片

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

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

项目作者:Dod-o

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

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

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

示例

《统计学习方法》全部算法_第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中的偏置b
        self.alpha = [0] * self.trainDataMat.shape[0]   # α 长度为训练集数目
        self.E = [0 * self.trainLabelMat[i, 0] for i in range(self.trainLabelMat.shape[0])]     #SMO运算过程中的Ei
        self.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

你可能感兴趣的:(深度学习)