机器学习实战之AdaBoost元算法(二)AdaBoost算法

转载请注明作者和出处:https://blog.csdn.net/weixin_45814668
知乎:https://www.zhihu.com/people/qiongjian0427
Git:https://github.com/qiongjian/Machine-learning/
运行环境:anaconda—jupyter notebook
Python版本: Python3.x

更多精彩内容,尽在微信公众号,欢迎您的关注:
在这里插入图片描述

1 基于单层决策树构建弱分类器

单层决策树(decision stump,也称为决策树桩) 是一种简单的决策树,它仅基于单个特征来做决策。

创建adaboost.py文件,编写代码:

import numpy as np
import matplotlib.pyplot as plt

def loadSimpData():
    datMat = np.matrix([[1. , 2.1], [2. , 1.1], [1.3, 1. ], [1. , 1. ], [1.5 , 1.6 ]])
    classLabels = [1.0, 1.0, -1.0, -1.0, 1.0]
    return datMat, classLabels

在这里插入图片描述

由数据集示意图可以看出,从某个坐标轴上选择一个值(即选择一条与坐标轴平行的直线)将所有的蓝色点和橙色点分开是不可能的。这是单层决策树难以处理的一个著名问题。

通过使用多棵单层决策树,就可以构建出一个能够对该数据集完全正确分类的分类器。

伪代码:

将最小错误率minError设为+inf
对数据集中的每一个特征(第一层循环):
	对每个步长(第二层循环):
		对每个不等号(第三层循环):
			建立一棵单层决策树并利用加权数据集对它进行测试
			如果错误率低于minError,则将当前单层决策树设为最佳单层决策树
返回最佳单层决策树
def stumpClassify(dataMatrix, dimen, threshVal, threshIneq):
#通过阈值比较对数据进行分类  threshVal:阈值   threshIneq:标志
    retArray = np.ones((np.shape(dataMatrix)[0], 1))
    if threshIneq == 'lt':
        retArray[dataMatrix[:, dimen] <= threshVal] = -1.0
    else
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值