当前位置:   article > 正文

徒手写代码之《机器学习实战》---adaboost算法(1)_adaboost算法头歌

adaboost算法头歌

adaboost理论部分(公式)后期补充

1.创建数据集

"""
此处不构建太复杂的数据集,不然可能后面用单层决策树时候,效果不好。
因为用任何一个单层决策树都无法完全分开这五个数据
"""
import numpy as np
def loadSimpData():
    datMat = np.matrix([[1,2.1],[2,1.1],[1.3,1],[1,1],[2,1]])
    classLabels = [1.0, 1.0, -1.0, -1.0, 1.0]
    return datMat,classLabels
loadSimpData()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
(matrix([[1. , 2.1],
         [2. , 1.1],
         [1.3, 1. ],
         [1. , 1. ],
         [2. , 1. ]]), [1.0, 1.0, -1.0, -1.0, 1.0])
  • 1
  • 2
  • 3
  • 4
  • 5

2.单层决策树生成函数

"""
单层决策树是一个很弱很弱的分类器,因为它只选择了一个特征就不继续选择了。
第一个函数stumpClassify()是通过阈值比较对数据进彳了分类的。
所有在阈值一边的数据会分到类别-i, 而在另外一边的数据分到类别+l。该函数可以通过数组过
滤来实现,首先将返回数组的全部元素设置为1 ,然后将所有不满足不等式要求的元素设置为-1。
可以基于数据集中的任一元素进行比较,同时也可以将不等号在大于、小于之间切换。
Parameters:
        dataMatrix - 数据矩阵
        dimen - 第dimen列,也就是第几个特征
        threshVal - 阈值
        threshIneq - 标志
Returns:
        retArray - 分类结果
"""
def stumpClassify(dataMatrix,dimen,threshVal,threshIneq):
     #初始化retArray为1
    retArray = np.ones((np.shape(dataMatrix)[0],1))  
    if threshIneq == 'lt':
        retArray[dataMatrix[:,dimen] <= threshVal] = -1.0#如果小于阈值,则赋值为-1
    else:
        retArray[dataMatrix[:,dimen] > threshVal] = -1.0#如果大于阈值,则赋值为-1
    return retArray



"""
buildStump()和三层for循环的详细解释《机器学习实战》书籍中写了。
此步骤利用单层决策树寻找到分类错误率最低的阈值即可。
Parameters:
        dataArr - 数据矩阵
        classLabels - 数据标签
        D - 样本权重
Returns:
        bestStump - 最佳单层决策树信息
        minError - 最小误差
        bestClasEst - 最佳的分类结果
"""
def buildStump(dataArr,classLabels,D):
    dataMatrix = np.mat(dataArr); labelMat = np.mat(classLabels).T
    m,n = np.shape(dataMatrix)
    numSteps = 10.0; bestStump = {
   }; bestClasEst = np.mat(np.zeros((m,1)))
    minError = float('inf')</
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/293218
推荐阅读
相关标签
  

闽ICP备14008679号