书上给出的解答虽然步骤上是很清楚但是个具体的结果并不是很详细,为了加强理解,自己实现了解题过程的所有数据,详细代码如下:

初始化数据和初始的权重

import numpy as npx = np.arange(10)
y = np.array([1] * 3 + [-1] * 3 + [1] * 3 + [-1])
w1 = np.array([.1] * 10)

寻找简单分类器的阈值

for v1 in np.arange(1.5, 10, 1):G1 = [1 if i < v1 else -1 for i in range(10)]err1 = ((G1 != y) * w1).sum()print(v1, "时错误率:%.3f" % err1, end=' ')G1 = [-1 if i < v1 else 1 for i in range(10)]err1 =((G1 != y) * w1).sum()print("错误率:%.4f"% err1)

结果如下:

这里有两个最优阈值,书上只给出了其中的一个,我们分别求出对应的结果

第一种情况: 阈值是2.5

v1 = 2.5
G1 = np.array([1 if i < v1 else -1 for i in range(10)])
err1 = round(((G1 != y) * w1).sum(), 4)
alpha1 = round(np.log((1-err1)/err1) / 2, 4)
print("alpha1:", alpha1)f1 = np.sign(alpha1 * G1)
(f1 == y).all()

得到的分类器系数为0.4236,并没有完全预测正确,下面接着设计第二个分类器

w2 = (w1 * np.exp(-alpha1 * y * G1)) / (w1 * np.exp(-alpha1 * y * G1)).sum()for v2 in np.arange(1.5, 10, 1):G2 = np.array([1 if i < v2 else -1 for i in range(10)])err2 =((G2 != y) * w2).sum()print(v2, "时错误率:%.4f" % err2, end=' ')G2 = np.array([-1 if i < v2 else 1 for i in range(10)])err2 =((G2 != y) * w2).sum()print("错误率:%.4f" % err2)

结果为:

阈值最优的是8.5

v2 = 8.5
G2 = np.array([1 if i < v2 else -1 for i in range(10)])
err2 = round(((G2 != y) * w2).sum(), 4)
alpha2 = round(np.log((1-err2)/err2) / 2, 4)
print("alpha2:", alpha2)f2 = np.sign(alpha1 * G1 + alpha2 * G2)
(f2 == y).all()

第二个分类器的系数是0.6496, 仍然没有完全预测正确,需要设计第三个分类器

w3 = (w2 * np.exp(-alpha2 * y * G2)) / (w2 * np.exp(-alpha2 * y * G2)).sum()for v3 in np.arange(1.5, 10, 1):G3 = np.array([1 if i < v3 else -1 for i in range(10)])err3 =((G3 != y) * w3).sum()print(v3, "时前正后负的错误率:%.4f " % err3, end=' ')G3 = np.array([-1 if i < v3 else 1 for i in range(10)])err3 =((G3 != y) * w3).sum()print("前负后正的错误率:%.4f " % err3)

结果

阈值最优的是5.5,但是注意是前负后正

v3 = 5.5
G3 = np.array([-1 if i < v3 else 1 for i in range(10)])
err3 = round(((G3 != y) * w3).sum(), 4)
alpha3 = round(np.log((1 - err3) / err3) / 2, 4)
print("apha3:", alpha3)f3 = np.sign(alpha1 * G1 + alpha2 * G2 + alpha3 * G3)
(f3 == y).all()

结果:

第三个分类器的系数是0.7521,分类器完全预测正确.

综上, 最终的分类器是:

f = 0.4236 * G1 + 0.6496 * G2 + 0.7521 * G3

第二种情况: 阈值是8.5

v1 = 8.5
G1 = np.array([1 if i < v1 else -1 for i in range(10)])
err1 = 0.3
alpha1 = round(np.log((1-err1)/err1) / 2, 4)
print("alpha1:", alpha1) # 0.4236f1 = np.sign(alpha1 * G1)
(f1 == y).all()

得到的分类器系数为0.4236,并没有完全预测正确,下面接着设计第二个分类器

w2 = (w1 * np.exp(-alpha1 * y * G1)) / (w1 * np.exp(-alpha1 * y * G1)).sum()for v2 in np.arange(1.5, 10, 1):G2 = np.array([1 if i < v2 else -1 for i in range(10)])err2 =((G2 != y) * w2).sum()print(v2, "时错误率:%.4f" % err2, end=' ')G2 = np.array([-1 if i < v2 else 1 for i in range(10)])err2 =((G2 != y) * w2).sum()print("错误率:%.4f" % err2)

结果:

第二个分类器阈值最优的是2.5

v2 = 2.5
G2 = np.array([1 if i < v2 else -1 for i in range(10)])
err2 = 0.2142857
alpha2 = round(np.log((1-err2)/err2) / 2, 4)
# 0.6496
print("alpha2:", alpha2)f2 = np.sign(alpha1 * G1 + alpha2 * G2)
(f2 == y).all()

第二个分类器的系数是0.6496, 仍然没有完全预测正确,需要设计第三个分类器

w3 = (w2 * np.exp(-alpha2 * y * G2)) / (w2 * np.exp(-alpha2 * y * G2)).sum()for v3 in np.arange(1.5, 10, 1):G3 = np.array([1 if i < v3 else -1 for i in range(10)])err3 =((G3 != y) * w3).sum()print(v3, "时错误率:%.4f " % err3, end=' ')G3 = np.array([-1 if i < v3 else 1 for i in range(10)])err3 =((G3 != y) * w3).sum()print("错误率:%.4f " % err3)

第三个分类器阈值最优的是5.5, 但是注意是前负后正

v3 = 5.5
G3 = np.array([-1 if i < v3 else 1 for i in range(10)])
err3 = 0.18182
alpha3 = round(np.log((1-err3)/err3) / 2, 4)
print("apha3:", alpha3)f3 = np.sign(alpha1 * G1 + alpha2 * G2 + alpha3 * G3)
(f3 == y).all()

第三个分类器的系数是0.752, 分类器完全预测正确.

综上, 最终的分类器是:

f = 0.4236 * G1 + 0.6496 * G2 + 0.7521 * G3

可见, 虽然每个分类器的阈值不一致, 但是最终的结果却是相同的,最终的分类器均是:

f = sign(0.4236 * G1 + 0.6496 * G2 + 0.7521 * G3)

李航 统计学习方法 中的adaboost案例详解相关推荐

  1. java list详解_Java 中 list 用法案例详解

    LIST是个容器接口可以理解为动态数组,传统数组必须定义好数组的个数才可以使用,而容器对象无须定义好数组下标总数,用add()方法即可添加新的成员对象,他可以添加的仅仅只能为对象,不能添加基本数据类型 ...

  2. 统计学习方法 pdf_李航统计学习方法(第三章)

    第3章 k 近邻法 k 近邻法(k-NN)是一种基于实例的学习方法,无法转化为对参数空间的搜索问题(参数最优化问题).它的特点是对特征空间进行搜索.除了k近邻法,本章还对以下几个问题进行较深入的讨论: ...

  3. 【李航统计学习方法】感知机模型

    目录 一.感知机模型 二.感知机的学习策略 三.感知机学习算法 感知机算法的原始形式 感知机模型的对偶形式 参考文献 本章节根据统计学习方法,分为模型.策略.算法三个方面来介绍感知机模型. 首先介绍感 ...

  4. wow mysql dbc_DBC中悲观锁介绍附案例详解

    DBC中悲观锁介绍附案例详解 了解下DBC中悲观锁: 代码如下: BDUtils 工具类: package JDBC; import java.sql.*; public class BDUtils ...

  5. html中使用volist要引入什么,thinkphp中volist标签使用案例详解

    这次给大家带来thinkphp中volist标签使用案例详解,thinkphp中volist标签使用的注意事项有哪些,下面就是实战案例,一起来看一下. 属性: name(必须):要输出的数据模板变量 ...

  6. 技术+案例详解无监督学习Autoencoder

    摘要:本篇文章将分享无监督学习Autoencoder的原理知识,然后用MNIST手写数字案例进行对比实验及聚类分析. 本文分享自华为云社区<[Python人工智能] 十五.无监督学习Autoen ...

  7. python编程入门与案例详解-quot;Python小屋”免费资源汇总(截至2018年11月28日)...

    原标题:"Python小屋"免费资源汇总(截至2018年11月28日) 为方便广大Python爱好者查阅和学习,特整理汇总微信公众号"Python小屋"开通29 ...

  8. shell脚本编程神器之awk语法案例详解

    AWK入门指南 文章目录 shell脚本编程神器之awk语法案例详解 安装AWK AWK 起步示例 AWK程序的结构 执行 awk 程序 awk 的错误提示 简单输出 打印每一行 打印特定行 NF,字 ...

  9. python代码案例详解-第7.20节 案例详解:Python抽象类之真实子类

    第7.20节 案例详解:Python抽象类之真实子类 上节介绍了Python抽象基类相关概念,并介绍了抽象基类实现真实子类的步骤和语法,本节结合一个案例进一步详细介绍. 一. 案例说明 本节定义了图形 ...

最新文章

  1. [Java] HashMap 源码简要分析
  2. How to use Chrome HAR save HTTP performance
  3. uva 1312——Cricket Field
  4. java 接口api设计的注意事项_Java接口设计原则
  5. ole object interface 能获取图片吗_常见的闲鱼辅助软件有哪些,你知道吗
  6. 揭开面纱:Kubernetes架构详解
  7. win2012故障转移mysql集群_在Windows Server 2012 R2中搭建SQL Server 2012故障转移集群
  8. 禾川x3e系列_禾川科技:“高性价比”X3E系列伺服系统能否摘得金球奖桂冠?
  9. WPS表格 JSA 学习笔记
  10. NTFS文件系统下的删除
  11. python爬虫---如何爬取京东商品评论并进行数据存储
  12. pyecharts画世界地图时显示为中文之世界各国中英文国名对照
  13. matlab矩阵求逆的模块,matlab矩阵求逆矩阵
  14. SpringCloud 基础架构搭建
  15. 如何下载网页上的视频?
  16. ubuntu企业微信和微信无法发送和显示图片和截图问题
  17. 辗转相除法+更相减损法求最大公约数
  18. signature=cf2a4ebb3fc32cddedd659609006f5f5,Таджикистан. Трудныйпутьразвития...
  19. 学生成绩排名(并列问题)
  20. alter标签的使用

热门文章

  1. 计算机按键不灵怎么回事,电脑键盘失灵,教您电脑键盘失灵怎么办
  2. IDEA mybatis 用户-订单-订单详情 → 互查
  3. PDF转Word文档怎么转?两招教你学会PDF转word
  4. 实训一 古诗横竖输出
  5. Win7系统截图小工具
  6. 曙光服务器怎么进入bios_在安装电脑系统进入bios界面时应该如何设置?怎么在bios界面把硬盘格式化?求电脑高手帮个忙!谢谢了… 曙光电脑进入bios...
  7. 系统集成项目管理工程师有什么用?你真的了解吗
  8. MySQL:Impossible WHERE noticed after reading const tables
  9. 【Python_046】网页爬虫(绕过SSH认证)
  10. 博弈论——重复博弈和制度建设