示例#1
0
def adaBoostTrainDS2(dataArray, classLabels, numIter = 40):
    weakClassArr = []  #弱分类器数组
    m = np.shape(dataArray)[0]
    D = np.mat(np.ones((m, 1)) / m)
    aggClassEst = np.mat(np.zeros((m, 1)))
    for i in range(numIter):
        bestStump, error, classEst = adaboost.buildStump(dataArray, classLabels, D)
        print("D:", D.T)
        alpha = np.float(0.5 * np.log((1.0 - error) / np.max(error, 1e-16)))
        bestStump['alpha'] = alpha
        weakClassArr.append(bestStump)
        print("classEst: ", classEst.T)
        expon = np.multiply(-1 * alpha * np.mat(classLabels).T, classEst)
        D = np.multiply(D, np.exp(expon))
        D = D / D.sum()
        aggClassEst += alpha * classEst
        print("aggClassEst: ", aggClassEst.T)
        aggErrors = np.multiply(np.sign(aggClassEst) != np.mat(classLabels).T,\
                                np.ones((m, 1)))
        errorRate = aggErrors.sum() / m
        print("total error: ", errorRate, "\n")
        if errorRate == 0.0:
            break
    #print "weakClassArr", weakClassArr
    return weakClassArr, aggClassEst
示例#2
0
def main():
    import adaboost
    from numpy import mat, ones
    datMat, classLabels = adaboost.loadSimpleData()
    D = mat(ones((5, 1)) / 5)
    bestStump, minError, bestClasEst = adaboost.buildStump(
        datMat, classLabels, D)
    classifierArr, aggClassEst = adaboost.adaBoostTrainDS(datMat, classLabels, 9)
    adaboost.adaClassify([[5, 5], [0, 0]], classifierArr)
示例#3
0
def test():
    datMat, classLabels = adaboost.loadSimpleData()
    print("dataMat: [%s] classLabels: [%s]" % (datMat, classLabels))
    #adaboost.plt(datMat, classLabels)
    D = mat(ones((5,1))/5)
    bestStump, minError, bestClassEst = adaboost.buildStump(datMat, classLabels, D) 
    print("bestStump: ", bestStump, " minError:", minError, " bestClasEst:", bestClassEst)

    classifierArray, classifierEst = adaboost.adaBoostTrainDS(datMat, classLabels, 9)
    print("classifierArray:", classifierArray)

    print(adaboost.adaClassify([0,0], classifierArray))
    print(adaboost.adaClassify([[5,5],[0,0]], classifierArray))
示例#4
0
def adaBoostTrainDS(dataArr, classLabels, numIt=40):
    from numpy import shape
    from numpy import mat
    from numpy import ones
    from numpy import shape
    from numpy import log
    from numpy import multiply
    from numpy import exp
    from numpy import zeros
    from numpy import sign
    from adaboost import buildStump

    weakClassArr = []
    m = shape(dataArr)[0]
    D = mat(ones((m, 1)) / m)
    aggClassEst = mat(zeros((m, 1)))  # 保持一个运行时估计值
    for i in range(numIt):
        print "index:", i
        bestStump, error, classEst = buildStump(dataArr, classLabels, D)
        print "D:", D.T
        # max(error,1e-16) 确保在没有错误时不会发生除零溢出
        alpha = float(0.5 * log((1.0 - error) / max(error, 1e-16)))
        bestStump['alpha'] = alpha
        weakClassArr.append(bestStump)
        print "classEst: ", classEst.T

        expon = multiply(-1 * alpha * mat(classLabels).T, classEst)
        D = multiply(D, exp(expon))
        D = D / D.sum()
        aggClassEst += alpha * classEst
        print "aggClassEst: ", aggClassEst.T

        aggErrors = multiply(
            sign(aggClassEst) != mat(classLabels).T, ones((m, 1)))
        errorRate = aggErrors.sum() / m
        print "total error: ", errorRate, "\n"
        if errorRate == 0.0:
            break
    return weakClassArr, aggClassEst  # 修改之处
# -*- coding:utf-8 -*-
import adaboost
from numpy import *
import os

# homedir= os.getcwd()+'/machinelearninginaction/ch07/'  #绝对路径
homedir = ''  #相对路径

#7.3 基于单层决策树构建弱分类器
datMat, classLabels = adaboost.loadSimpData()
D = mat(ones((5, 1)) / 5)
print "datMat:", datMat
print "classLabels:", classLabels
print "D:", D
print ":",
adaboost.buildStump(datMat, classLabels, D)

#7.4 完整AdaBoost算法的实现
classifierArr = adaboost.adaBoostTrainDS(datMat, classLabels, 9)
print "classifierArr:", classifierArr

#7.5 测试算法:基于AdaBoost的分类
datMat, classLabels = adaboost.loadSimpData()
classifierArr = adaboost.adaBoostTrainDS(datMat, classLabels, 30)
print "分类1:", adaboost.adaClassify([0, 0], classifierArr)
print "分类2:", adaboost.adaClassify([[5, 5], [0, 0]], classifierArr)

#7.6 示例:在一个难数据集上应用AdaBoost
datArr, labelArr = adaboost.loadDataSet(homedir + 'horseColicTraining2.txt')
print "datArr:", datArr
print "labelArr:", labelArr
示例#6
0
import adaboost
from numpy import *

datMat,classLabels=adaboost.loadSimpData()

print "%s \n %s" % (classLabels, classLabels)

D = mat(ones((5,1))/5)

print "%s" % D

bestStump,minError,bestClasEst = adaboost.buildStump(datMat,classLabels,D)

print "%s" % bestStump
print "%s" % minError
print "%s" % bestClasEst

import adaboost
from numpy import *

datMat, classLabels = adaboost.loadSimpData()
D = mat(ones((5, 1))/5)
print adaboost.buildStump(datMat, classLabels, D)
classifierArray = adaboost.adaBoostTrainDS(datMat, classLabels, 9)
print classifierArray

datArr, labelArr = adaboost.loadSimpData()
classifierArr = adaboost.adaBoostTrainDS(datArr, labelArr, 30)
print adaboost.adaClassify([0, 0], classifierArr)
print adaboost.adaClassify([[5, 5], [0, 0]], classifierArr)
示例#8
0
__author__ = 'sunbeansoft'

import adaboost as ad
from numpy import *

datMat, classLabels = ad.loadSimpData()

D = mat(ones((5, 1)))

print ad.buildStump(datMat, classLabels, D)
示例#9
0
    for i in range(len(classifierArr)):
        classEst = stumpClassify(
            dataMatrix, classifierArr[i]['dim'], classifierArr[i]['thresh'],
            classifierArr[i]['ineq'])  #call stump classify
        aggClassEst += classifierArr[i]['alpha'] * classEst
        print(aggClassEst)
    return sign(aggClassEst)


if __name__ == "__main__":
    import numpy as np
    import adaboost
    dataMat, classLabels = loadSimpData()
    print(dataMat, "\n", classLabels)
    D = np.mat((np.ones((5, 1))) / 5)
    #print(D)
    print(adaboost.buildStump(dataMat, classLabels, D))

    classifierArray = adaboost.adaBoostTrainDS(dataMat, classLabels, 9)
    print("\nclassifierArray:\n", classifierArray)

    print("\nadaboost.adaClassify([0, 0]:")
    print(adaboost.adaClassify([0, 0], classifierArray))

    print("\nadaboost.adaClassify([[5,5],[0,0]]:")
    print(adaboost.adaClassify([[5, 5], [0, 0]], classifierArray))

    datArr, labelArr = adaboost.loadDataSet('horseColicTraining2.txt')
    classifierArray = adaboost.adaBoostTrainDS(datArr, labelArr, 10)
    print(classifierArray)
示例#10
0
 def test_build_stump(self):
     #print "test_build_stump"
     dataMat, classLabels = adaboost.loadSimpleData()
     D = mat(ones((5, 1)) / 5)
     result = adaboost.buildStump(dataMat, classLabels, D)
示例#11
0
# -*- coding: utf-8 -*-
#  os.chdir('D:\www\IdeaProject\MLiA_SourceCode\machinelearninginaction\Ch07\')
# print os.getcwd()
from numpy.ma import zeros, array

if __name__ == '__main__':
    print 'hello'
    from numpy import *
    # import operator
    import adaboost

    dataMat, classLabels = adaboost.loadSimpData()
    print dataMat
    print classLabels
    D = mat(ones((5, 1)) / 5)
    print D
    bestStump, minError, bestClasEst = adaboost.buildStump(
        dataMat, classLabels, D)
    print bestStump