机器学习 集成方法Bagging(Python实现)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了机器学习 集成方法Bagging(Python实现),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2537字,纯文字阅读大概需要4分钟。
内容图文
![机器学习 集成方法Bagging(Python实现)](/upload/InfoBanner/zyjiaocheng/765/00793cab950b483fa0a2797c2216c1f3.jpg)
自主采样:即有放回的采样
在原数据集中经过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
w = np.ones((len(dataset[0])+1, 1))
#属性矩阵最后添加一列全1列(参数w中有常数参数)
a = np.ones((len(dataset), 1))
data = np.c_[data, a]
#步长
n = 0.001
for i in range(10000):
#计算当前参数w下的预测值
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]
#使用训练好的参数w进行计算
y = sigmoid(np.dot(data, w))
b, c = np.shape(y)
for i in range(b):
#预测标签
flag = -1
#大于0.5的为正例
if y[i, 0] > 0.5:
flag = 1
#小于等于0.5的为反例
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]:
小编整理了一些Python的学习资料
688244617
免费自取
rightcount += 1
print('预测为%d,真实为%d'%(flag_new, test_labelset[i]))
print("正确率%f"%(rightcount / len(test_dataset)))
通过集成的方式提高弱学习器的性能。
原文:https://blog.csdn.net/qq_41398808/article/details/92797462
内容总结
以上是互联网集市为您收集整理的机器学习 集成方法Bagging(Python实现)全部内容,希望文章能够帮你解决机器学习 集成方法Bagging(Python实现)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。