MCPcopy Create free account
hub / github.com/Jack-Cherish/Machine-Learning / adaBoostTrainDS

Function adaBoostTrainDS

AdaBoost/ROC.py:85–117  ·  view source on GitHub ↗

使用AdaBoost算法训练分类器 Parameters: dataArr - 数据矩阵 classLabels - 数据标签 numIt - 最大迭代次数 Returns: weakClassArr - 训练好的分类器 aggClassEst - 类别估计累计值

(dataArr, classLabels, numIt = 40)

Source from the content-addressed store, hash-verified

83 return bestStump, minError, bestClasEst
84
85def adaBoostTrainDS(dataArr, classLabels, numIt = 40):
86 """
87 使用AdaBoost算法训练分类器
88 Parameters:
89 dataArr - 数据矩阵
90 classLabels - 数据标签
91 numIt - 最大迭代次数
92 Returns:
93 weakClassArr - 训练好的分类器
94 aggClassEst - 类别估计累计值
95 """
96 weakClassArr = []
97 m = np.shape(dataArr)[0]
98 D = np.mat(np.ones((m, 1)) / m) #初始化权重
99 aggClassEst = np.mat(np.zeros((m,1)))
100 for i in range(numIt):
101 bestStump, error, classEst = buildStump(dataArr, classLabels, D) #构建单层决策树
102 # print("D:",D.T)
103 alpha = float(0.5 * np.log((1.0 - error) / max(error, 1e-16))) #计算弱学习算法权重alpha,使error不等于0,因为分母不能为0
104 bestStump['alpha'] = alpha #存储弱学习算法权重
105 weakClassArr.append(bestStump) #存储单层决策树
106 # print("classEst: ", classEst.T)
107 expon = np.multiply(-1 * alpha * np.mat(classLabels).T, classEst) #计算e的指数项
108 D = np.multiply(D, np.exp(expon))
109 D = D / D.sum() #根据样本权重公式,更新样本权重
110 #计算AdaBoost误差,当误差为0的时候,退出循环
111 aggClassEst += alpha * classEst #计算类别估计累计值
112 # print("aggClassEst: ", aggClassEst.T)
113 aggErrors = np.multiply(np.sign(aggClassEst) != np.mat(classLabels).T, np.ones((m,1))) #计算误差
114 errorRate = aggErrors.sum() / m
115 # print("total error: ", errorRate)
116 if errorRate == 0.0: break #误差为0,退出循环
117 return weakClassArr, aggClassEst
118
119
120def plotROC(predStrengths, classLabels):

Callers 1

ROC.pyFile · 0.70

Calls 1

buildStumpFunction · 0.70

Tested by

no test coverage detected