MCPcopy Index your code
hub / github.com/Dod-o/Statistical-Learning-Method_Code / calc_e_Gx

Function calc_e_Gx

AdaBoost/AdaBoost.py:52–93  ·  view source on GitHub ↗

计算分类错误率 :param trainDataArr:训练数据集数字 :param trainLabelArr: 训练标签集数组 :param n: 要操作的特征 :param div:划分点 :param rule:正反例标签 :param D:权值分布D :return:预测结果, 分类误差率

(trainDataArr, trainLabelArr, n, div, rule, D)

Source from the content-addressed store, hash-verified

50 return dataArr, labelArr
51
52def calc_e_Gx(trainDataArr, trainLabelArr, n, div, rule, D):
53 '''
54 计算分类错误率
55 :param trainDataArr:训练数据集数字
56 :param trainLabelArr: 训练标签集数组
57 :param n: 要操作的特征
58 :param div:划分点
59 :param rule:正反例标签
60 :param D:权值分布D
61 :return:预测结果, 分类误差率
62 '''
63 #初始化分类误差率为0
64 e = 0
65 #将训练数据矩阵中特征为n的那一列单独剥出来做成数组。因为其他元素我们并不需要,
66 #直接对庞大的训练集进行操作的话会很慢
67 x = trainDataArr[:, n]
68 #同样将标签也转换成数组格式,x和y的转换只是单纯为了提高运行速度
69 #测试过相对直接操作而言性能提升很大
70 y = trainLabelArr
71 predict = []
72
73 #依据小于和大于的标签依据实际情况会不同,在这里直接进行设置
74 if rule == 'LisOne': L = 1; H = -1
75 else: L = -1; H = 1
76
77 #遍历所有样本的特征m
78 for i in range(trainDataArr.shape[0]):
79 if x[i] < div:
80 #如果小于划分点,则预测为L
81 #如果设置小于div为1,那么L就是1,
82 #如果设置小于div为-1,L就是-1
83 predict.append(L)
84 #如果预测错误,分类错误率要加上该分错的样本的权值(8.1式)
85 if y[i] != L: e += D[i]
86 elif x[i] >= div:
87 #与上面思想一样
88 predict.append(H)
89 if y[i] != H: e += D[i]
90 #返回预测结果和分类错误率e
91 #预测结果其实是为了后面做准备的,在算法8.1第四步式8.4中exp内部有个Gx,要用在那个地方
92 #以此来更新新的D
93 return np.array(predict), e
94
95def createSigleBoostingTree(trainDataArr, trainLabelArr, D):
96 ''&#x27;

Callers 1

createSigleBoostingTreeFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected