安居多伦多
  • 多市生活
    • 多市生活
    • 加国税务
    • 旅游度假
    • 生活安全
    • 行车安全
    • 窍门集锦
  • 多市书苑
    • 热门
    • 小说
    • 教育
  • 家居信息
    • 家居信息
    • 房屋保养
    • 房屋贷款
    • 房屋租赁
    • 房屋建筑
    • 房前屋后
    • 家居风水
  • 健康保健
    • 健康保健
    • 饮食起居
    • 食品安全
    • 健身锻炼
  • 书苑账户
    • 书苑登入
    • 书苑注册
    • 忘记书苑密码
    • 书苑账户信息
    • 关于我们
    • 联系我们
    • 隐私政策
多伦多书苑
在线书籍:随时阅读,随身听书。
所有书籍 | 人文 | 人物 | 人生 | 健康 | 儿童 | 医学 | 历史 | 历史 | 古典 | 哲学宗教 | 商业 | 外国 | 寓言 | 小说 | 教育 | 风水 | 管理 | 语言 |
为使本公益资源网站能继续提供免费阅读,请勿屏蔽广告。谢谢!报告弹出广告被滥用。
  1. 安居多伦多
  2. 网上书苑
  3. IT
  4. AI
  5. 机器学习实战

机器学习实战

2022-03-09 0人点赞 0条评论
点赞
x
语速1.0: 2.0
进度0:

上一页   |   返回目录   |   下一页

7.5 测试算法:基于AdaBoost的分类

一旦拥有了多个弱分类器以及其对应的alpha值,进行测试就变得相当容易了。在程序清单7-2的adaBoostTrainDS()中,我们实际已经写完了大部分的代码。现在,需要做的就只是将弱分类器的训练过程从程序中抽出来,然后应用到某个具体的实例上去。每个弱分类器的结果以其对应的alpha值作为权重。所有这些弱分类器的结果加权求和就得到了最后的结果。在程序清单7-3中列出了实现这一过程的所有代码。然后,将下列代码添加到adaboost.py中,就可以利用它基于adaboostTrainDS()中的弱分类器对数据进行分类。

程序清单7-3 AdaBoost分类函数

def adaClassify(datToClass,classifierArr):
dataMatrix = mat(datToClass)
m = shape(dataMatrix)[0]
aggClassEst = mat(zeros((m,1)))
for i in range(len(classifierArr)):
classEst = stumpClassify(dataMatrix,classifierArr[i]['dim'],classifierArr[i]['thresh'],classi
aggClassEst += classifierArr[i]['alpha']*classEst
print aggClassEst
return sign(aggClassEst)

读者也许可以猜到,上述的adaClassify()函数就是利用训练出的多个弱分类器进行分类的函数。该函数的输入是由一个或者多个待分类样例datToClass以及多个弱分类器组成的数组classifierArr。函数adaClassify()首先将datToClass转换成了一个NumPy矩阵,并且得到datToClass中的待分类样例的个数m。然后构建一个0列向量aggClassEst,这个列向量与adaBoostTrainDS()中的含义一样。

接下来,遍历classifierArr中的所有弱分类器,并基于stumpClassify()对每个分类器得到一个类别的估计值。在前面构建单层决策树时,我们已经见过了stumpClassify()函数,在那里,我们在所有可能的树桩值上进行迭代来得到具有最小加权错误率的单层决策树。而这里我们只是简单地应用了单层决策树。输出的类别估计值乘上该单层决策树的alpha权重然后累加到aggClassEst上,就完成了这一过程。

上述程序中加入了一条print语句,以便我们了解aggClassEst每次迭代后的变化结果。最后,程序返回aggClassEst的符号,即如果aggClassEst大于0则返回+1,而如果小于0则返回-1。

我们再看看实际中的运行效果。加入程序清单7-3中的代码之后,在Python提示符下输入:

>>> reload(adaboost)

如果没有弱分类器数组,可以输入如下命令:

>>> datArr,labelArr=adaboost.loadSimpData()
>>> classifierArr = adaboost.adaBoostTrainDS(datArr,labelArr,30)

于是,可以输入如下命令进行分类:

>>> adaboost.adaClassify([0, 0],classifierArr)
[[-0.69314718]]
[[-1.66610226]]
[[-2.56198199]]
matrix([[-1.]])

可以发现,随着迭代的进行,数据点[0,0]的分类结果越来越强。当然,我们也可以在其他点上进行分类:

>>> adaboost.adaClassify([[5, 5],[0,0]],classifierArr)
[[ 0.69314718]
.
.
[-2.56198199]]
matrix([[ 1.], [-1.]])

这两个点的分类结果也会随着迭代的进行而越来越强。在下一节中,我们会将该分类器应用到一个规模更大、难度也更大的真实数据集中。

上一页   |   返回目录   |   下一页

类似书籍

Python机器学习手册:从数据预处理到深度学习
Python机器学习手册:从数据预处理到深度学习
Python机器学习——预测分析核心算法
Python机器学习——预测分析核心算法
Python机器学习实践指南
Python机器学习实践指南
Author:

标签: 暂无
最后更新:2022-03-09
< 上一篇

本书评论

取消回复

©2021 安居多伦多 - 版权所有

本站由 好事来 Hostlike.com 提供技术支持。