机器学习李航——Adaboost课本例题实现
例8.1Adaboost的例子
注意求D3或者D4的时候只需要把w替换一下就行,记得还得改阈值。这个代码算个半自动的,因为还需要手动改一下。
import numpy as np
def getA(e1):
print("A="+str(1/2*np.log((1-e1)/e1)))
return 1/2*np.log((1-e1)/e1)
def getZ(a,y1,y2,w1,w2):
return np.sum(w1* np.exp(y1*(-a)))+ np.sum(w2* np.exp((-y2)*(-a)))
def getD2(a,y1,y2,w1,w2,Z):
d1 = w1/Z*np.exp(y1*(-a))
print("d1="+str(d1))
d2 = w2/Z* np.exp((-y2)*(-a))
print("d2="+str(d2))
return np.append(d1,d2)
if __name__ == '__main__':
data = np.array([[0,1],
[1,1],
[2,1],
[3,-1],
[4,-1],
[5,-1],
[6,1],
[7,1],
[8,1],
[9,-1]])
w = np.zeros(10, dtype=float)+0.1 #初始化权重 D1
#w = np.array([0.07142857,0.07142857,0.07142857,0.07142857,0.07142857,0.07142857,0.16666667,0.16666667,0.16666667,0.07142857])#D2
#w = np.array([0.04545454,0.04545454,0.04545454,0.16666667,0.16666667,0.16666667,0.10606061,0.10606061,0.10606061,0.04545454])#D3
x = data[:,0]#取x的值
y = data[:,1]#取y的值
v = 2.5#取阈值
y1 = y[0:int((v//1+1))]
y2 = y[int((v//1+1)):]
w1 = w[0:int((v//1+1))]
w2 = w[int((v//1+1)):]
e1=0#误差率
print("y1="+str(y1))
print("y2="+str(y2))
for i,j in enumerate(y1):
if j < 0:
e1 = e1+w1[i]
for i,j in enumerate(y2):
if j > 0:
e1 = e1+w2[i]
print("e1="+str(e1))
a = getA(e1)
z = getZ(a,y1,y2,w1,w2)
print("Z="+str(z))
print("D2="+str(getD2(a,y1,y2,w1,w2,z)))
机器学习李航——Adaboost课本例题实现的更多相关文章
- 机器学习之AdaBoost原理与代码实现
AdaBoost原理与代码实现 本文系作者原创,转载请注明出处: https://www.cnblogs.com/further-further-further/p/9642899.html 基本思路 ...
- 机器学习之Adaboost (自适应增强)算法
注:本篇博文是根据其他优秀博文编写的,我只是对其改变了知识的排序,另外代码是<机器学习实战>中的.转载请标明出处及参考资料. 1 Adaboost 算法实现过程 1.1 什么是 Adabo ...
- 【机器学习】--Adaboost从初始到应用
一.前述 AdaBoost算法和GBDT(Gradient Boost Decision Tree,梯度提升决策树)算法是基于Boosting思想的机器学习算法.在Boosting思想中是通过对样本进 ...
- 机器学习算法-Adaboost
本章内容 组合类似的分类器来提高分类性能 应用AdaBoost算法 处理非均衡分类问题 主题:利用AdaBoost元算法提高分类性能 1.基于数据集多重抽样的分类器 - AdaBoost 长处 泛化错 ...
- 100天搞定机器学习|Day57 Adaboost知识手册(理论篇)
Boosting算法 Boosting是一种用来提高弱分类器准确度的算法,是将"弱学习算法"提升为"强学习算法"的过程,主要思想是"三个臭皮匠顶个诸葛 ...
- 机器学习之Adaboost与XGBoost笔记
提升的概念 提升是一个机器学习技术,可以用于回归和分类问题,它每一步产生一个弱预测模型(如决策树),并加权累加到总模型中:如果每一步的弱预测模型生成都是依据损失函数的梯度方向,则称之为梯度提升(Gra ...
- 机器学习笔记·adaboost
一.算法简介 Adaboost算法是一种集成算法,所谓集成算法就是将多个弱的分类器组合在一起变成一个强的分类器.弱分类器通常是指分类效果比随机分类稍微好一点的分类器.就像我们在做一个重要决定的时候,通 ...
- 机器学习实战-AdaBoost
1.概念 从若学习算法出发,反复学恶习得到一系列弱分类器(又称基本分类器),然后组合这些弱分类器构成一个强分类器.简单说就是假如有一堆数据data,不管是采用逻辑回归还是SVM算法对当前数据集通过分类 ...
- 机器学习技法-AdaBoost元算法
课程地址:https://class.coursera.org/ntumltwo-002/lecture 重要!重要!重要~ 一.Adaptive Boosting 的动机 通过组合多个弱分类器(hy ...
随机推荐
- Docker Desktop for Windows Experience
Docker Desktop for Windows Experience: https://github.com/poazy/boazy-learn/blob/master/doc/Docker%2 ...
- 洛谷$1541$ 乌龟棋 线性$DP$
Luogu CH Sol f[i]表示走到第i个格子时获得的最大分数 发现转移与各个爬行卡片的数量有关,一共只有4种卡片 所以就把这四种卡片的已使用张数也放进状态,f[i][a][b][c][d] ...
- 子网划分及NAT技术总结
近段项目需要用到网络相关的知识,硬着头皮又回顾了一波,这里做一下记录. 一 分类的IP地址 我们使用的IP地址(IP V4)可以划分为A,B,C,D,E 5个类型,其中的D,为组播地址,E类地址为保留 ...
- 「USACO08JAN」电话线Telephone Lines 解题报告
题面 大意:在加权无向图上求出一条从 \(1\) 号结点到 \(N\) 号结点的路径,使路径上第 \(K + 1\) 大的边权尽量小. 思路: 由于我们只能直接求最短路,不能记录过程中的具体的边--那 ...
- 敏捷开发流程之Scrum:3个角色、5个会议、12原则
本文主要从Scrum的定义和目的.敏捷宣言.Scrum中的人员角色.Scrum开发流程.敏捷的12原则等几方面帮助大家理解Scrum敏捷开发的全过程. 一.Scrum的定义和目的 Scrum是一个用于 ...
- 深入理解linux i节点(inode)
转载自:https://blog.csdn.net/vsooda/article/details/9216245 linux中,文件查找不是通过文件名称来查找的.实际上是通过i节点来实现文件的查找定位 ...
- 【原】C#两个类互相包含类对象可以吗?
在阅读大牛代码的时候发现了这个问题,之所以标题以问号开头,是因为我还没搞懂这个问题.权当记录,以希望以后搞懂. 部分图片转贴吧:http://tieba.baidu.com/p/6015910029 ...
- react路由的跳转和传参
1.路由的跳转 一.DOM跳转 在需要跳转的页面导入import {Link} from 'react-router-dom',在需要跳转的地方使用link标签的to属性进行跳转,路由配置文件中导出的 ...
- Spring Boot 集成 Seata 解决分布式事务问题
seata 简介 Seata 是 阿里巴巴2019年开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务.在 Seata 开源之前,Seata 对应的内部版本在阿里内部一 ...
- Scala实践11
1.1泛型类 泛型类是将类型作为参数的类.它们对集合类特别有用. 定义泛类型:泛型类将类型作为方括号内的参数[].一种惯例是使用字母A作为类型参数标识符,但是可以使用任何参数名称. class Sta ...