精华内容
下载资源
问答
  • 说起机器学习最响当当的书籍,李航博士的《统计学习方法》一定是榜上有名了!许多互联网企业的面试、笔试题目,都参考这本书。这本书第一版就包含了众多主要的监督学习算法与模型,通过作者 6 年时间的努力,第二版...

    说起机器学习最响当当的书籍,李航博士的《统计学习方法》一定是榜上有名了!许多互联网企业的面试、笔试题目,都参考这本书。

    这本书第一版就包含了众多主要的监督学习算法与模型,通过作者 6 年时间的努力,第二版已正式发布啦!

    ada4ebd7a2f53d2e220150fb41932f7d.png

    作者在在第二版加入了无监督学习的主要算法和模型。不知道你有没有拿到新书开始看起来了呢?

    监督学习和无监督学习这两大块出发,基本上传统机器学习的主要概念就能一步步掌握了!

    《统计学习方法》是由三要素构成,即方法=模型+策略+算法,你需要掌握:

    faa8c03f07901adf891bfa36105ce613.png

    掌握这三点,意味着你能弄懂机器学习最核心的原理。而《统计学习方法》就是基于这些内容做出了详细的讲解和说明。因此,不仅是在学术界,还是在工业界,这都是一本必读好书

    但面对想学好机器学习的同学们来说,自己看书还是会有各种各样的困难,无法理解作者背后的逻辑,无法进行系统梳理

    为此,在统计学习方法第二版刚出来不久后,我们就紧接着推出了一场集章节导学视频+书籍重难点及手推公式视频讲解+代码作业视频讲解+三维度答疑为一体的第二版的《李航统计学训练营》,并加入了无监督学习部分

    3426e705c80aa59d511286d690a32d03.png

    独创四大教学模式,通过5步帮你务实理论功底

    添加章节导学视频讲解

    针对书本每一章节内容先进行导读梳理,帮助你理解书本章节内容,学习重难点知识,并对一些重要的先修知识和概念进行补充讲解,让你知道应该怎么学习。

    fc6bb14445ba8702d0792529da62f1a7.gif

    重难点视频讲解

    针对书中的重难点内容,录制重难点知识讲解的视频,讲解知识点,说明知识点是什么、为什么、怎么做,结合实际案例进行讲解

    227c6d27d93eed8e8c8c70b5e38e68f2.gif

    手写板详细推导公式

    导师亲自手推公式,细致到每一步骤,让课程内容充实紧凑,涉及到应用多元统计与随机过程等学科知识相串联。

    d012e5c77fcc9f4b976e8af17127416c.gif

    代码作业视频讲解

    为了增强实战能力,我们针对每一章节都设计了代码作业,并且提供详细的作业讲解视频和代码的完整复现,帮你在完成作业以后能够充分理解背后蕴含的原理

    ede613d31f46c72e786b5003b96cec7f.gif

    三维度答疑

    为了保证大家遇到难题能够及时被解决,我们设计的三维度答疑的方式:

    1、导师接受1对1提问,12小时内保证解决问题

    2、微信群助教及时互动,群友互答

    3、每月统一收集问题直播答疑,系统讲解重难点

    74f0e46aaa5c3bdecc96195892659934.png

    课程大纲 46adcc61582414e285e842e036589565.gif

    Week1  

    【视频课第1章 统计学习方法概论

    • 理解“本章概要”的5点内容

    • 理解模型过拟合产生的原因以及造成的影响

    • 理解机器学习的评价标准:模型的泛化能力

    • 熟悉极大似然估计和贝叶斯估计基本思想和求解方法

    视频课第2章 感知机

    • 掌握感知机的模型形式、损失函数及对应的优化问题

    • 掌握随机梯度下降算法原理

    • 理解感知机模型中随机梯度算法的收敛性

    视频课第3章 k近邻

    • 掌握k近邻算法的原理

    • 理解k近邻算法三要素及模型对应的损失函数

    • 掌握k近邻算法在分类问题上的求解过程

    作业:

    【推导】推导正态分布均值的极大似然估计和贝叶斯估计

    【思考题】思考感知机模型的假设空间?模型复杂度体现在哪里?

    【代码复现】自编程/调用sklearn实现一个感知机算例

    【思考题】思考k近邻算法的模型复杂度体现在哪里?什么情况下会造成过拟合?

    【代码复现】自编程/调用sklearn实现一个k近邻算法算例

    作业视频讲解:

    极大似然估计和贝叶斯估计作业

    感知机算例自编程和sklearn实现

    Week2

    【视频课】第4章 朴素贝叶斯法

    • 理解朴素贝叶斯模型的模型假设

    • 理解后验概率最大化与期望损失最小化的关系

    • 掌握极大似然估计的求解过程

    • 掌握贝叶斯估计的求解过程

    【视频课】第5章 决策树

    • 理解信息增益、基尼系数的含义和计算方法

    • 掌握ID3算法

    • 了解决策树剪枝的目的和剪枝准则

    • 掌握CART生成算法

    作业

    【代码复现】自编程/调用sklearn实现朴素贝叶斯算法

    【证明题】证明CART剪枝算法中,当α确定的情况下,存在唯一的最小子树Ta使得损失函数Cα(T)最小。

    【代码复现】调用sklearn实现决策树算例,有余力者进行自编程实现

    作业视频讲解:

    K近邻算法自编程和sklearn实现

    朴素贝叶斯自编程和sklearn实现

    Week3

    【视频课】第6章 逻辑斯谛回归与最大熵模型

    • 掌握二项逻辑斯谛和多项逻辑斯谛模型的模型形式和似然函数

    • 掌握二项逻辑斯谛求解中的梯度下降法

    • 理解最大熵模型的思想,了解拉格朗日对偶性

    • 理解最大熵模型中的改进的迭代尺度算法

    【视频课】第7章 支持向量机

    • 理解线性可分支持向量机硬间隔最大化的思想、对应的优化问题、对偶问题和相应算法

    • 理解硬间隔最大化解的存在唯一性

    • 理解线性支持向量机软间隔最大化的思想、对应的优化问题、对偶问题和相应算法

    • 了解核函数在非线性支持向量机中的应用和对应的算法

    • 了解序列最小最优化算法的基本思想

    作业:

    【代码复现】自编程/调用sklearn实现逻辑斯缔回归模型,尝试改变参数,选择不同算法

    【代码复现】手算/自编程/调用sklearn完成习题7.2,求线性可分支持向量机的最大间隔分离超平面和分类决策函数

    作业视频讲解:

    决策树自编程和sklearn实现

    逻辑斯蒂回归自编程和sklearn实现

    Week4

    【视频课】第8章 提升方法

    • 掌握AdaBoost算法的求解过程

    • 理解AdaBoost算法的训练误差

    • 理解AdaBoost算法是前向分步算法的一个特例

    • 掌握回归问题的提升树算法

    【视频课】第9章 EM算法及推广

    • 通过例题9.1掌握EM算法E步和M步的求解过程

    • 了解EM算法求解如何用从最大化观测数据似然函数导出

    • 掌握高斯混合模型如何用EM算法估计参数

    作业:

    【代码复现】自编程/调用sklearn对提升方法例题8.1进行实现

    【代码复现】自编程求解两分量高斯混合模型的参数

    作业视频讲解:

    支持向量机算例自编程和sklearn实现

    提升方法算例的自编程和sklearn实现

    Week5

    【视频课】第10章 隐马尔科夫模型

    • 了解隐马尔科夫模型的三要素和三个基本问题

    • 通过例题10.2,掌握隐马尔可夫模型概率计算中的向前算法

    • 理解隐马尔科夫模型参数的非监督学习算法

    • 通过例题10.3,理解维特比算法

    【视频课】第11章 条件随机场

    • 理解概率无向图

    • 通过例题11.1和例题11.2,掌握线性链条件随机场模型参数形式和矩阵形式

    • 掌握条件概率和期望的前向-后向算法

    • 掌握改进的迭代尺度法和拟牛顿法优化的目标函数

    • 通过例题11.3,掌握预测的维特比算法

    作业:

    【代码复现】自编程实现隐马尔可夫模型的前向、后向和维特比算法

    【代码复现】自编程实现条件随机场习题11.4

    作业视频讲解:

    用EM算法自编程估计两分量高斯混合模型的参数

    自编程实现隐马尔可夫模型的前向、后向和维特比算法

    自编程实现条件随机场习题11.4

    Week6

    【视频课】第13章 无监督学习概论

    • 理解无监督学习基本原理

    • 理解机器学习三要素

    • 熟悉无监督学习方法

    视频课】第14章 聚类方法

    • 理解聚类的基本概念:相似度或距离、类或簇、类与类之间的距离

    • 掌握层次聚类方法

    • 掌握k均值聚类的模型、策略、算法和算法特性

    视频课】第15章 奇异值分解

    • 掌握奇异值分解的定义与性质

    • 掌握奇异值分解的计算步骤

    • 熟悉奇异值分解与矩阵近似

    作业:

    【推导】推导由类与簇的第一个定义得出其他三个定义

    【思考题】思考k均值聚类与高斯混合模型加EM算法的异同点?

    【代码复现】自编程实现一个k均值聚类案例

    【思考题】思考矩阵的奇异值分解与对称矩阵的对角化的异同点?

    【代码复现】自编程矩阵的奇异值分解

    作业视频讲解:

    几类典型的聚类分析方法(系统聚类法、重心法等)

    k均值聚类案例的自编程实现

    证明任何一个秩为1的矩阵可写成两个向量的外积形式

    Week7

    【视频课】第16章 主成分分析

    • 理解总体主成分分析的定义与性质

    • 掌握求解总体主成分的基本定理与运用

    • 理解样本主成分分析的定义与性质

    • 掌握相关矩阵的特征值分解算法

    • 掌握数据矩阵的奇异值分解算法

    【视频课】第17章 潜在语义分析

    • 理解单向量空间与话题向量空间

    • 掌握潜在语义分析算法-矩阵奇异值分解算法

    • 掌握非负定矩阵分解算法

    • 了解非负定矩阵分解的形式

    作业

    【代码复现】自编程实现主成分分析案例

    【证明题】证明样本协方差矩阵S是总体协方差矩阵的无偏估计

    【代码复现】自编程实现潜在语义分析的奇异值分解法和非负定矩阵分解法

    作业视频讲解:

    潜在语义分析自编程实现

    主成分分析自编程实现

    Week8

    【视频课】第18章 概率潜在语义分析

    • 了解概率潜在语义分析模型的基本想法

    • 掌握概率潜在语义分析模型的生成模型、共线模型

    • 掌握概率潜在语义分析模型的参数和几何解释

    • 掌握概率潜在语义分析运用生成模型学习的EM算法

    【视频课】第19章 马尔科夫链蒙特卡罗法

    • 理解蒙特卡罗法的随机抽样、数学期望估计和积分计算步骤

    • 理解马尔科夫链的基本定义、离散状态与连续状态、基本性质

    • 熟悉马尔科夫链蒙特卡罗法的基本想法和实现步骤

    • 掌握Metropolis-Hastings算法基本原理与单分量Metropolis-Hastings算法

    • 熟悉吉布斯抽样基本原理与算法并进行抽样计算

    作业:

    【证明题】证明如果马尔科夫链是不可约的,且有一个状态是非周期的,则其他所有状态也是非周期的。

    【代码复现】自编程实现马尔科夫链,尝试改变参数,选择不同状态转移矩阵

    【代码复现】自编程实现习题18.3潜在语义分析

    作业视频讲解:

    概率潜在语义分析自编程实现

    马尔科夫链自编程实现

    证明可逆马尔科夫链一定是不可约的

    Week9

    【视频课】第20章 潜在狄利克雷分配

    • 理解狄利克雷分布的定义与共轭先验

    • 掌握潜在狄利克雷分配模型的基本定义、概率图模型

    • 理解潜在狄利克雷分配模型中随机变量序列的可交换性

    • 熟悉LDA吉布斯抽样算法的基本想法、主要部分和后处理

    • 理解LDA的变分推理过程

    • 掌握LDA的变分EM算法的基本结构与推导步骤

    作业:

    【思考题】LDA的吉布斯抽样算法、变分EM算法中利用到狄利克雷分布的部分是哪些?

    【证明题】推导狄利克雷分布数学期望公式

    【代码复现】自编程针对17.2.2文本案例,使用LDA模型进行话题分析

    作业视频讲解:

    LDA模型话题分析自编程实现

    LDA的吉布斯抽样算法的变分EM算法的Python实现

    Week10

    【视频课】第21章 PageRank算法

    • 理解有向图和随机游走模型的基本想法

    • 理解PageRank的基本定义和一般定义

    • 掌握PageRank的计算-迭代算法、幂法和代数算法

    【视频课】第22章 无监督学习方法总结

    • 熟悉各无监督学习方法的关系和特点

    • 熟悉基础机器学习方法

    • 熟悉话题模型之间的关系和特点

    作业:

    【证明题】假设方阵A是随机矩阵,即其每个元素非负,每列元素之和为1,证明A的k次方仍是随机矩阵,其中k是自然数

    【代码复现】自编程/调用Python验证习题21.2,以不同的初始分布向量进行迭代,仍得到同样的极限向量R

    【证明题】PageRank 一般定义中的马尔科夫链具有平稳分布

    作业视频讲解:

    证明随机矩阵的最大特征值为1

    PageRank算法自编程和Python实现

    有好的课程教材,也必须要有好的导师,才能让学习能力倍速提升,我们的导师团,个个都是行业内的精英,深受学员好评

    Eddy老师 60c8b3c6ddcf0a7f6c32a6788c8c3d42.png

    现任香港某大学数学系博士

    毕业于国内双一流重点大学硕士学位

    曾任国内知名电商平台大数据算法工程师

    曾获数学建模竞赛,国家二等奖

    谈老师 af7cc94d6aaa6c286bae10056ab4df30.png

    上海交通大学应用统计研究生

    浙江大学统计学专业

    在精英世家教授英国、美国本科生统计学、数学和金融等多门学科

    授课经验丰富,擅长R语言,Matlab和Python

    加量!升级!不加价!

    现加入13小时无监督学习课程!

    共计40+节视频课+20+节作业讲解课

    现在加入,仅需98

    (最后一次98,下期即将涨价为198元)

    0209e2f9eaae8c820f9bf6692301175b.png

    购买即赠送《统计学习方法》电子版

    报名时间:2020年2月14日—2019年2月28日

    支持七天无理由退款,一次购买,支持无限次回放!永久有效

    支持手机/电脑倍速播放!学习体验更流畅~

    8b577b7e63e6fe1336462ee9e3d7cf02.gif 8b577b7e63e6fe1336462ee9e3d7cf02.gif我们的教学服务: 对于优秀作业我们将置顶,助教将进行点评和批改

    2d4e5e1bdbedc11863623446bb287054.png

    看到同学们这么认真的在做学习笔记,也是满满的成就感

    0b8e3b4c70dadf7a8b786e1d3fd3ab23.png

    我们的老师在往期训练营里备受好评!而我们,还在不断的更新迭代课程内容!

    a3565bdfb83e0f61132b1c6734cb8d17.png

    学完有效果吗?事实证明,统计学是所有人工智能算法课的基础,也是最重要的一环

    8b577b7e63e6fe1336462ee9e3d7cf02.gif 8b577b7e63e6fe1336462ee9e3d7cf02.gif你还能获得:01免费GPU时长

    除了优质的课程设计,我们还准备了多重福利!凡深度之眼学员均可领取48小时免费时长!这里的GPU来自于全球各地,通过DBC(区块链技术)分布式网络连接在一起,没有中心化服务器,你的数据都是加密传输的,不会被窃取,非常安全!而且价格便宜,低至1小时不到1块钱!

    b9702ccd15a729108c1e66dc8d85e2a6.png02奖学金

    为了鼓励学员,我们还一直坚持对于优秀的学生发放奖金(训练营采取积分机制,打卡、老师助教点评、点赞都会得到相应的积分,凭积分就可以换取相应奖品!)

    9c531979bf5ead1bdfa5ba8baf687e7e.png

    VIP学员已享受超值福利不参与返款活动

    03定制周边

    按学习任务要求完成全勤打卡且排名前20的同学,我们将赠送你深度之眼定制周边福利!

    b28b5482afeaf4856df6640f2291e1b0.png

    最后一次98,下期即将涨价为198元!

    10周你能获得的 不仅仅是知识和能力

    更有一群陪你学习的伙伴~

    省下一张电影票马上开始学习吧!

    0209e2f9eaae8c820f9bf6692301175b.png

    报名时间:2020年2月14日—2019年2月28日

    添加班主任微信进学员内部群

    cd884dbcdb914b484d9f96542c5e967b.png

    开启你的升级打怪之旅

    3697f94b5d520b6f5a084c98bb1fa330.gif重磅推出深度之眼VIP

    一年畅学17大主题训练营,从小白入门到进阶大神的最佳学习路径

    1bd0fd2d6d4c1ba51365421c0ef40a74.png

    添加班主任微信

    cd884dbcdb914b484d9f96542c5e967b.png

    ~了解VIP特权吧~

    订阅须知

    Q、付完98元后面还要再付钱吗?

    A、一次性购买完整课程就是98元,没有任何其他付款内容

    Q、课程资料在哪里看?

    A、所有的课程资料均会在深度之眼公众号内上传。

    Q、报名后可以退款吗?

    A、本服务为虚拟内容产品,支持七天无理由退款

    Q、可以开具发票吗?

    A、可以开具普通电子发票,请联系微信班主任填写需要的信息即可。

    展开全文
  • 题目要求使用后向算法计算,程序中分别使用了前向算法和后向算法,最后得到的结果是一样的。 前向算法和后向算法: 输入是: A: 状态转移概率矩阵 B: 观测概率矩阵 p_i: 初始状态概率向量 O: 观测序列 ...
  • 机器学习 统计学习
  • 统计学习方法第二版 李航【学习笔记&Python代码】

    千次阅读 多人点赞 2020-08-02 19:33:27
    以后我会在博客记录自己学习《统计学习方法第二版这本书的笔记,其实也就是我自己认为比较重要或者有用的内容,以及部分python代码的实现。 第一章 统计学习及监督学习概论 这一章主要都是些概念,所以我可能更多...

    前言

    《统计学习方法》和《机器学习》这两本书,大概是做科研的小伙伴都避不开的必读书吧。笔者在很久前就已经学过该书了,但是因为先前学完没有做一个详细的整理总结。然后最近实验室招新,需要带一带小朋友学习这本书,故重温该书且在此整理记录,望对大家有所帮助!

    第一章 统计学习及监督学习概论

    这一章主要都是些概念,大家感兴趣的话可以去看我的另一篇博客,讲得更加简洁明了:
    开始学习机器学习之前你必须要了解的知识有哪些?机器学习系列入门篇

    第二章 感知机

    这里先附上复现代码。

    class Model:
        def __init__(self):
            self.w = np.ones(len(data[0])-1, dtype=np.float32)
            self.b = 0
            self.l_rate = 0.1
            # self.data = data
    
        def sign(self, x, w, b):
            y = np.dot(x, w) + b
            return y
    
        # 随机梯度下降法
        def fit(self, X_train, y_train):
            is_wrong = False
            while not is_wrong:
                wrong_count = 0
                for d in range(len(X_train)):
                    X = X_train[d]
                    y = y_train[d]
                    if y * self.sign(X, self.w, self.b) <= 0:
                        self.w = self.w + self.l_rate*np.dot(y, X)
                        self.b = self.b + self.l_rate*y
                        wrong_count += 1
                if wrong_count == 0:
                    is_wrong = True
            return 'Perceptron Model!'
    
        def score(self):
            pass
    

    下载训练数据:

    import pandas as pd
    import numpy as np
    from sklearn.datasets import load_iris
    import matplotlib.pyplot as plt
    
    iris = load_iris()
    df = pd.DataFrame(iris.data, columns=iris.feature_names)
    df['label'] = iris.target
    
    df.columns = ['sepal length', 'sepal width', 'petal length', 'petal width', 'label']
    df.label.value_counts()
    
    plt.scatter(df[:50]['sepal length'], df[:50]['sepal width'], label='0')
    plt.scatter(df[50:100]['sepal length'], df[50:100]['sepal width'], label='1')
    plt.xlabel('sepal length')
    plt.ylabel('sepal width')
    plt.legend()
    plt.show()
    
    data = np.array(df.iloc[:100, [0, 1, -1]])
    
    X, y = data[:,:-1], data[:,-1]
    
    y = np.array([1 if i == 1 else -1 for i in y])
    
    perceptron = Model()
    perceptron.fit(X, y)
    

    在这里插入图片描述
    测试:

    x_points = np.linspace(4, 7,10)
    y_ = -(perceptron.w[0]*x_points + perceptron.b)/perceptron.w[1]
    plt.plot(x_points, y_)
    
    plt.plot(data[:50, 0], data[:50, 1], 'bo', color='blue', label='0')
    plt.plot(data[50:100, 0], data[50:100, 1], 'bo', color='orange', label='1')
    plt.xlabel('sepal length')
    plt.ylabel('sepal width')
    plt.legend()
    plt.show()
    

    在这里插入图片描述

    第三章 k近邻法

    定义

    近邻法 (k-nearest neighbor,k -NN) 种基本分类与回归方法。本书只讨论分类问题中的 k近邻法。 近邻法的输入为实例的特征向量,对应于特征空间的点:输出为实例的类别,可以取多类。 近邻法假设给定 个训练数据集, 其中的实例类别己定。分类时,对新的实例,根据其 个最近邻的训练实例的类别,通过多数表决等方式进行预测 因此 近邻法不具有显式的学习过程。

    多数表决简单理解即为哪种类别数量多对应的分类结果就是哪种。

    而不显式学习简单理解即为,不像感知机等方法需要预先训练好一个模型,k近邻是每次分类就利用一遍训练集里的数据,

    k近邻算法

    大致理解的话,先是输入训练集:
    在这里插入图片描述
    输出即为实例x所属的类别。

    算法流程大致如下:
    (1)先是计算x与训练集中给定数据的距离度量最小的k个数据(这里的距离度量通常是求lp距离,一般为l2,即欧式距离)
    (2)根据决策方法即多数表决方法来求出实例x所属类别:
    在这里插入图片描述

    k值的选择

    大家肯定都能想到k值的选择必然会对结果产生极大影响,那么k值取大取小对应的会有什么影响呢?
    选小了:学习的近似误差会减小,但是估计误差会增大。什么意思呢?就是我对于距离实例x的近似点会非常敏感,那如果刚好我的近似点就是误差点的话,那么我的结果就会出错。这样的话便容易出现过拟合。

    选大了:对应的可以减小我的估计误差,但是相对的那些原本不那么近似的点也会被我纳入考量,使得发生错误。同时相对的模型也会变得简单。往极端了想,k值等于我训练集的大小,那岂不是巨简单,直接给出我训练集里面类别占比最大的最可以了,但这样肯定是有很大问题的。

    在应用中 一般取 比较小的数值,且通常采用交叉验证法来选取最优的k值。

    kd树

    书本里面最开始讲得非常生硬,这里我打算结合具体题目来讲。

    先附一下题目:

    在这里插入图片描述
    上图其实还没有画完整,我先给它补全。
    在这里插入图片描述

    下面介绍解题步骤:
    (1)先建立一个kd树,注意这里的kd树是二叉树。
    最开始选哪一个作为根节点呢?聪明的小朋友可以发现A是上述的根节点,选它作为根节点的原因是因为它的y坐标大小是所有y坐标大小的中位数。所以我们每次分割的时候都是选其中位数的点(如果中位数的点有两个的话就任一都可)。同样的道理,为啥第二条线不是经过的G或者E,而是经过C(即选C点为子结点),因为C的横坐标大小是在gce点中的中位数。以此类推。
    提醒一下啊,我们可以先往x轴方向分割,也可以往y轴方向切割,然后x和y轴方向交替切割。
    (2)选择一个叶节点作为“当前最近点”,叶节点上图一共有四个,分别是g、e、f和d点。那为啥选d呢?
    是这样子的,实例s点是不是比根节点a的纵坐标要小(之所以比纵坐标是因为这里是从纵坐标开始切割的),既然小的话那我们就选A下面这块区域,这块区域显然是由点B总管的,那这个时候同理再与点B比较一下横坐标,是不是要比点B大,那大的话就选右边这块区域,这个时候显然就只剩下点D了,所以确定点D为当前最近点。
    (3)确定完某一个叶节点为当前最近点后,开始递归向上回退,退到父节点B,看看父节点B会不会更近,好的不会,那再看看父节点B它的另一个子区域有没有点比当前最近点还近。具体怎么检查呢,我们以实例点S与当前最近点D的距离为半径画个圆,看看这个区域会不会跟这个圆相交,不会的话就直接放弃,会的话移动到该结点检查是否需要更新当前最近点。
    好的,经过上述我们发现点B管的区域也没有用了,那我们再回退到点B的父节点,重复上述工作:即看点A会不会更近,不会,那就看点A的另一个子结点C有没有跟我相交,有,那移动到点C,看看与其相交的右区域有无点包含在圆里面,即距离更近,有,ok,完事。

    实现代码

    附下实现kd树实现代码:

    import numpy as np
    from math import sqrt
    import pandas as pd
    from sklearn.datasets import load_iris
    import matplotlib.pyplot as plt
    from sklearn.model_selection import train_test_split
    
    iris = load_iris()
    df = pd.DataFrame(iris.data, columns=iris.feature_names)
    df['label'] = iris.target
    df.columns = ['sepal length', 'sepal width', 'petal length', 'petal width', 'label']
    
    data = np.array(df.iloc[:100, [0, 1, -1]])
    train, test = train_test_split(data, test_size=0.1)
    x0 = np.array([x0 for i, x0 in enumerate(train) if train[i][-1] == 0])
    x1 = np.array([x1 for i, x1 in enumerate(train) if train[i][-1] == 1])
    
    
    def show_train():
        plt.scatter(x0[:, 0], x0[:, 1], c='pink', label='[0]')
        plt.scatter(x1[:, 0], x1[:, 1], c='orange', label='[1]')
        plt.xlabel('sepal length')
        plt.ylabel('sepal width')
    
    
    class Node:
        def __init__(self, data, depth=0, lchild=None, rchild=None):
            self.data = data
            self.depth = depth
            self.lchild = lchild
            self.rchild = rchild
    
    
    class KdTree:
        def __init__(self):
            self.KdTree = None
            self.n = 0
            self.nearest = None
    
        def create(self, dataSet, depth=0):
            if len(dataSet) > 0:
                m, n = np.shape(dataSet)
                self.n = n - 1
                axis = depth % self.n
                mid = int(m / 2)
                dataSetcopy = sorted(dataSet, key=lambda x: x[axis])
                node = Node(dataSetcopy[mid], depth)
                if depth == 0:
                    self.KdTree = node
                node.lchild = self.create(dataSetcopy[:mid], depth+1)
                node.rchild = self.create(dataSetcopy[mid+1:], depth+1)
                return node
            return None
    
        def preOrder(self, node):
            if node is not None:
                print(node.depth, node.data)
                self.preOrder(node.lchild)
                self.preOrder(node.rchild)
    
        def search(self, x, count=1):
            nearest = []
            for i in range(count):
                nearest.append([-1, None])
            self.nearest = np.array(nearest)
    
            def recurve(node):
                if node is not None:
                    axis = node.depth % self.n
                    daxis = x[axis] - node.data[axis]
                    if daxis < 0:
                        recurve(node.lchild)
                    else:
                        recurve(node.rchild)
    
                    dist = sqrt(sum((p1 - p2) ** 2 for p1, p2 in zip(x, node.data)))
                    for i, d in enumerate(self.nearest):
                        if d[0] < 0 or dist < d[0]:
                            self.nearest = np.insert(self.nearest, i, [dist, node], axis=0)
                            self.nearest = self.nearest[:-1]
                            break
    
                    n = list(self.nearest[:, 0]).count(-1)
                    if self.nearest[-n-1, 0] > abs(daxis):
                        if daxis < 0:
                            recurve(node.rchild)
                        else:
                            recurve(node.lchild)
    
            recurve(self.KdTree)
    
            knn = self.nearest[:, 1]
            belong = []
            for i in knn:
                belong.append(i.data[-1])
            b = max(set(belong), key=belong.count)
    
            return self.nearest, b
    
    
    kdt = KdTree()
    kdt.create(train)
    kdt.preOrder(kdt.KdTree)
    
    score = 0
    for x in test:
        input('press Enter to show next:')
        show_train()
        plt.scatter(x[0], x[1], c='red', marker='x')  # 测试点
        near, belong = kdt.search(x[:-1], 5)  # 设置临近点的个数
        if belong == x[-1]:
            score += 1
        print("test:")
        print(x, "predict:", belong)
        print("nearest:")
        for n in near:
            print(n[1].data, "dist:", n[0])
            plt.scatter(n[1].data[0], n[1].data[1], c='green', marker='+')  # k个最近邻点
        plt.legend()
        plt.show()
    
    score /= len(test)
    print("score:", score)
    
    

    结束语

    正在不断更新中。。。

    以后我会在博客记录自己学习《统计学习方法》第二版这本书的笔记,其实也就是我自己认为比较重要或者有用的内容,以及部分python代码的实现。

    由于博主能力有限,博文中提及的信息,也难免会有疏漏之处。希望发现疏漏的朋友能热心指出其中的错误,以便下次修改时能以一个更完美更严谨的样子,呈现在大家面前。同时如果有更好的方法也请不吝赐教。

    如果有什么相关的问题,也可以关注评论留下自己的问题,我会尽量及时发送!

    展开全文
  • 清华大学深圳研究院袁春教授为《统计学习方法(第二版)》制作的课件。在第一版监督学习的基础上,增加了无监督学习内容,更加丰富,是非常值得学习材料。
  • 统计学习方法》是学习机器学习的必备教材。该课件涵盖了书本的核心内容,非常适合于预习和复习。
  • 书籍介绍统计学习方法即机器学习方法,是计算机及其应用领域的一门重要学科。本书分为监督学习和无监督学习两篇,全面系统地介绍了统计学习的主要方法。包括感知机、k 近邻法、朴素贝叶斯法、决策树、...


    书籍介绍

    统计学习方法即机器学习方法,是计算机及其应用领域的一门重要学科。本书分为监督学习和无监督学习两篇,全面系统地介绍了统计学习的主要方法。

    包括感知机、k 近邻法、朴素贝叶斯法、决策树、逻辑斯谛回归与最大熵模型、支持向量机、提升方法、EM 算法、隐马尔可夫模型和条件随机场,以及聚类方法、奇异值分解、主成分分析、潜在语义分析、概率潜在语义分析、马尔可夫链蒙特卡罗法、潜在狄利克雷分配和 PageRank 算法等。

    作者介绍

    李航教授:研究方向包括信息检索、自然语言处理、统计机器学习及数据挖掘。他一直活跃在相关学术领域,曽出版过三部学术专著,并在顶级国际学术会议和国际学术期刊上发表过上百篇学术论文,拥有40项授权美国专利。

    获得方式:

    1.扫码关注 “机器学习算法那些事” 公众号

    2.后台回复关键词:LH2

    注:此处建议复制,不然容易打错

    ▲长按扫描关注,回复LH2即可获取

    课件详情

    共22章详解监督学习和无监督学习

    第一章机器学习和统计学习实例截图

    第三章K-近邻算法实例截图

    获得方式:

    1.扫码关注 “机器学习算法那些事” 公众号

    2.后台回复关键词:LH2

    注:此处建议复制,不然容易打错

    ▲长按扫描关注,回复LH2即可获取

    展开全文
  • 统计学习基础,中英文都有。 希望能帮助你们哈哈哈哈
  • 统计学习方法 (李航 2)

    千次阅读 2020-02-06 18:10:27
    文章目录第1篇 监督学习第 1 章: 统计学习及监督学习概论第 2 章:感知机第 3 章:k近邻法第 4 章:朴素贝叶斯法第 5 章:决策树第 6 章:逻辑斯谛回归与最大熵模型第 7 章:支持向量机第 8 章:提升方法第 9 章:...

    第1篇 监督学习

    第 1 章: 统计学习及监督学习概论

      [总结补充]
      [算法代码]
      [课后习题]

    第 2 章:感知机

    第 3 章:k近邻法

    第 4 章:朴素贝叶斯法

    第 5 章:决策树

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

    第 7 章:支持向量机

    第 8 章:提升方法

    第 9 章:EM算法及推广

    第 10 章:隐马尔可夫模型

    第 11 章:条件随机场

    第 12 章:监督学习方法总结

    第2篇:无监督学习

    第 13 章:无监督学习概论

    第 14 章:聚类方法

    第 15 章:奇异值分解

    第 16 章:主成分分析

    第 17 章:潜在语义分析

    第 18 章:概率潜在语义分析

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

    第 20 章:潜在狄利克雷分配

    第 21 章:PageRank算法

    第 22 章:无监督学习方法总结

    展开全文
  • 李航老师的《统计学习方法》可以说是机器学习的入门宝典,许多机器学习培训班、互联网企业的面试、笔试题目,很多都参考这本书。2019年5月1日,《统计学习方法第二版》出版了!本文对新书做下简...
  • 李航老师的《统计学习方法第二版的代码实现更新完毕,本文提供下载。李航老师编写的《统计学习方法》全面系统地介绍了统计学习的主要方法,特别是监督学习方法,包括感知机、k近邻法、朴素贝叶斯法...
  • 李航《统计学习方法第二版)》 原创,转载请注明出处 1.1统计学习 1.2统计学习的分类
  • 本书已经出第二版,2019年5月之后所有内容更新参考第二版第一次印刷。 [目录] 工具包 为方便学习,整理一些工具说明。 GitHub的markdown公式支持一般,推荐使用Chrome插件来渲染TeX公式,本地Markdown编辑器推荐 ...
  • 李航统计学习第二版思维导图-决策树xmind格式,可以编辑。决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析...
  • 李航老师的《统计学习方法第二版的代码实现更新完毕,本文提供下载。(黄海广)李航老师编写的《统计学习方法》全面系统地介绍了统计学习的主要方法,特别是监督学习方法,包括感知机、k近邻法、朴...
  • 概率论与数理统计教程_第二版_习题与解答_茆诗松_pdf,高清,包含详细目录,默认打开目录
  • 这里包含两本机器学习中常用的数学知识,有同济线性代数统计学习方法_李航,是电子数的,PDF的格式。
  • 《非参数估计》王星编著第二版,清华大学出版。是学习非参数检验非常好的教材。
  • 统计与分析(第二版)参考答案-B09-3400.pdf
  • 统计与分析(第二版)习题册参考答案-B09-3429.pdf
  • 统计学习基础:数据挖掘、推理与预测》介绍了这些领域的一些重要概念。尽管应用的是统计学方法,但强调的是概念,而不是数学。许多例子附以彩图。《统计学习基础:数据挖掘、推理与预测》内容广泛,从有指导的学习...
  • 李航博士的《统计学习方法》可以说是机器学习的入门宝典。现如今,统计学习方法2)于今年5月份出版,在监督学习的基础上,增加了无监督学习内容,更加丰富,是非常值得学习材料。最近清...
  • 部分复习题: 遇到有意思的复习题,我会拿出来,并且进行分析 上机实践: 全部上机实践题的解题思路 文章目录 第一章 Python概述 几个例题 第二章 Python语言基础 选择题:1、3、7、8 思考题:9 上机实践:2~6 案例...
  • 叶斯统计 2_茆诗松,汤银才,完整,内容非常适合国人阅读习惯,由浅入深耐人寻味。
  • 计算理论基础第二版PDF和部分习题答案,分享大家学习一下。
  • 统计自然语言处理 第二版 宗成庆 pdf是一本经过第二次更新的统计自然语言方面的教材。自然语言作为人类思想情感最基本,最直接,最方便的表达工具,无时无刻不充斥在人类社会的各个角落。小编推荐的这本统计自然语言...
  • 数理统计第二版

    2018-12-28 16:18:55
    研究生学生必修数学课数理统计,机器学习的一些关键算法在里面都有相关的公式推导,超级实用
  • 概率论和数理统计是进行机器学习数据挖掘的一些基础,这本书不错
  • 安德森版本商务与经济统计12)自测题解答与偶数题答案.pdf
  • 强化学习教父 Richard Sutton 的经典教材《Reinforcement Learning:An Introduction》第二版公布啦。本书分为三大部分,共十七章,机器之心对其简介和框架做了扼要介绍,并附上了全书目录、课程代码与资料。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,311
精华内容 6,524
关键字:

统计学习方法第二版pdf