编程语言
首页 > 编程语言> > EL之AdaBoost:集成学习之AdaBoost算法的简介、使用方法、案例应用之详细攻略

EL之AdaBoost:集成学习之AdaBoost算法的简介、使用方法、案例应用之详细攻略

作者:互联网

EL之AdaBoost:集成学习之AdaBoost算法的简介、使用方法、案例应用之详细攻略

 

AdaBoost算法的简介

       Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。

       Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改过权值的新数据集送给下层分类器进行训练,最后将每次训练得到的分类器融合起来,作为最后的决策分类器。使用adaboost分类器可以排除一些不必要的训练数据特征,并放在关键的训练数据上面。

 

1、AdaBoost M1算法

(1)、证明过程





 

 

AdaBoost算法的使用方法

参考文章:机器学习实战之AdaBoost算法

 

 

AdaBoost算法的案例应用

1、预测马疝病是否死亡的数据集

#自适应加载数据
def loadDataSet(filename):
    #创建数据集矩阵,标签向量
    dataMat=[];labelMat=[]
    #获取特征数目(包括最后一类标签)
    #readline():读取文件的一行
    #readlines:读取整个文件所有行
    numFeat=len(open(filename).readline().split('\t'))
    #打开文件
    fr=open(filename)
    #遍历文本每一行
    for line in fr.readlines():
        lineArr=[]
        curLine=line.strip().split('\t')
        for i in range(numFeat-1):
            lineArr.append(float(curLine[i]))
        #数据矩阵
        dataMat.append(lineArr)
        #标签向量
        labelMat.append(float(curLine[-1]))
    return dataMat,labelMat

#自适应加载数据
def loadDataSet(filename):
    #创建数据集矩阵,标签向量
    dataMat=[];labelMat=[]
    #获取特征数目(包括最后一类标签)
    #readline():读取文件的一行
    #readlines:读取整个文件所有行
    numFeat=len(open(filename).readline().split('\t'))
    #打开文件
    fr=open(filename)
    #遍历文本每一行
    for line in fr.readlines():
        lineArr=[]
        curLine=line.strip().split('\t')
        for i in range(numFeat-1):
            lineArr.append(float(curLine[i]))
        #数据矩阵
        dataMat.append(lineArr)
        #标签向量
        labelMat.append(float(curLine[-1]))
    return dataMat,labelMat


#训练和测试分类器
def classify():
    #利用训练集训练分类器
    datArr,labelArr=loadDataSet('horseColicTraining2.txt')
    #得到训练好的分类器
    classifierArray=adaBoostTrainDS(datArr,labelArr,10)
    #利用测试集测试分类器的分类效果
    testArr,testLabelArr=loadDataSet('horseClicTest2.txt')
    prediction=adaClassify(testArr,classifierArray)
    #输出错误率
    num=shape(mat(labelArr))[1]
    errArr=mat(ones((num,1)))
    error=errArr[prediction!=mat(testLabelArr).T].sum()
    print("the errorRate is: %.2f",errorRate=float(error)/float((num)))

 

 

 

 

 

 

 

 

 

 

 

标签:EL,训练,分类器,算法,AdaBoost,攻略,dataMat,append
来源: https://blog.csdn.net/qq_41185868/article/details/90723424