自主采样:即有放回的采样
在原数据集中经过m次有放回的随机采样,可以得到一个含m个样例的子数据集,使用这个子数据集进行训练,得到一个基学习器
我们对上述过程重复T次,就会得到T个基学习器,我们对这T个学习器的预测结果进行结合,就能够得到一个准确率更高的预测结果。一般使用简单投票的方法进行结合,即选择T个预测结果中预测最多的类,例如10次预测,其中7个预测为正类,3个预测为反类,我们就认为最终预测为正类。
我们以logistic线性回归模型为例,实现一下:
读取文件:
def load(filename):
fp = open(filename)
dataset = []
labelset = []
for i in fp.readlines():
a = i.strip().split()
dataset.append([float(j) for j in a[:len(a)-1]])
labelset.append(int(float(a[-1])))
return dataset, labelset
'logistic线性模型(训练和测试过程):
def sigmoid(z):
return 1.0 / (1 + np.exp(-z))
def train(dataset, labelset):
data = np.mat(dataset)
label = np.mat(labelset).transpose()
w = np.ones((len(dataset[0])+1, 1))
a = np.ones((len(dataset), 1))
data = np.c_[data, a]
n = 0.001
for i in range(10000):
c = sigmoid(np.dot(data, w))
b = c - label
change = np.dot(np.transpose(data), b)
w = w - change * n
return w
def test(dataset, labelset, w):
label = []
data = np.mat(dataset)
a = np.ones((len(dataset), 1))
data = np.c_[data, a]
y = sigmoid(np.dot(data, w))
b, c = np.shape(y)
for i in range(b):
flag = -1
if y[i, 0] > 0.5:
flag = 1
else:
flag = 0
label.append(flag)
return label
'随机选取m个样例形成子集:
def random_sampling(dataset, labelset, m):
data = []
label = []
for i in range(m):
a = random.randint(0, len(dataset) - 1)
data.append(dataset[a])
label.append(labelset[a])
return data, label
'20个基学习器的训练过程:
W = []
for i in range(20):
data, label = random_sampling(dataset, labelset, 150)
w = train(data, label)
W.append(w)
集成学习的测试过程:
def jicheng_test(w, test_dataset, test_labelset):
flags = []
for i in w:
flag = test(test_dataset, test_labelset, i)
flags.append(flag)
flags = np.array(flags)
a, b = np.shape(flags)
rightcount = 0
for i in range(b):
n0 = list(flags[:,i].T).count(0)
n1 = list(flags[:,i].T).count(1)
if n0 > n1:
flag_new = 0
else:
flag_new = 1
if flag_new == test_labelset[i]:
rightcount += 1
print('预测为%d,真实为%d'%(flag_new, test_labelset[i]))
print("正确率%f"%(rightcount / len(test_dataset)))
'通过集成的方式提高弱学习器的性能。
相关知识
Python机器学习基础教程
【机器学习】花卉识别01
如何降低数据噪声对机器学习的影响
《Python机器学习开发实战》电子书在线阅读
卷积神经网络实现鸢尾花数据分类python代码实现
python机器学习
学好Python=基础学科能力+业务知识+ IT技术
[Python机器学习]鸢尾花分类 机器学习应用
Python机器学习教程——逻辑回归
利用Python实现手写数字识别的完整指南
网址: 机器学习 集成方法Bagging(Python实现) https://m.huajiangbk.com/newsview854483.html
上一篇: 项目过程记录 |
下一篇: 机器学习python集成算法 |