文档章节

2017年2月20日 Adaboost

airxiechao
 airxiechao
发布于 2017/03/20 08:36
字数 198
阅读 9
收藏 0

Adaboost linearly combines weak learners into a single strong learner in an iterative fashion.
At each iteration, the higher weights are set on previously misclassified samples, a weak learner is trained on such weighted samples

from __future__ import division
import numpy as np
from sklearn.ensemble import AdaBoostClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import make_gaussian_quantiles
from matplotlib.pyplot import plot
%matplotlib inline

X, y = make_gaussian_quantiles(n_samples=10000, n_features=5,n_classes=2, random_state=1)
y[y==0] = -1

class myAdaBoost:
    
    def fit(self, X, y, n_estimators):
        self.weights = np.array([1/X.shape[0]] * X.shape[0])
        self.learners = []
        self.alphas = []
        
        for i in range(n_estimators):
            clf = DecisionTreeClassifier(max_depth=2)
            clf.fit(X,y,self.weights)
            self.learners.append(clf)
            
            e = np.sum(self.weights[np.nonzero(clf.predict(X) != y)])
            a = .5 * np.log((1-e)/e)
            self.alphas.append(a)

            self.weights = self.weights*np.exp(-y*a*clf.predict(X))
            self.weights = self.weights/np.sum(self.weights)
            
        return self
            
    def score(self, X, y):
        ps = np.zeros(X.shape[0])

        for i in range(len(self.learners)):
            l = self.learners[i]
            a = self.alphas[i]

            ps += a * l.predict(X)

        ps[ps < 0] = -1
        ps[ps >= 0] = 1

        return np.count_nonzero(ps == y) / y.shape[0]
        

plot(range(1,50), [myAdaBoost().fit(X,y,i).score(X,y)for i in range(1,50)])

 

© 著作权归作者所有

airxiechao
粉丝 4
博文 42
码字总数 9717
作品 1
成都
程序员
私信 提问
2017年上半年软考报名时间汇总(持续更新)

全国2017年上半年软考报名时间汇总(持续更新) 关注报名时间:各省报名开始时间、结束时间不一。 关注报考科目:部分科目一年只考核一次。 关注考试时间:上半年时间为5月20日,及时开始应试...

liuyiok
2017/02/13
0
0
Day186 | 遇见GCS(七)

7月份说超级节点计划马上开启,不过一个多月过去,还没有消息。 新闻:http://blockchain.game/news.html 开发者社区:http://developer.blockchain.game/ 新版官网上线:http://blockchain...

自由算法
2018/08/21
0
0
2017年2月教育信息化工作月报

《教育部2017年工作要点》和《教育部科技司2017年工作要点》明确了教育信息化工作任务,教育部制定了《“十三五”国家信息化规划》相关重点任务部内分工方案,组织赴海南、重庆等地开展了中小...

玄学酱
2018/04/16
0
0
数据回看中美贸易战对我国的影响

前言 从3月22日特朗普签署就301调查结果采取行动的备忘录,宣布对中国出口至美国的600亿美元商品加征关税,到5月19日中美两国联合发表声明,双方同意将采取有效措施实质性减少美对华货物贸易...

DataHunter小数
2018/06/01
0
0
Coffey/JQuery EasyUI 1.5.x Of Insdep Theme

#jQuery EasyUI 1.5.x of insdep theme 下方附部分美化截图 Insdep theme是基于EasyUI 1.5.x 的一款免费的美化主题包,拥有百度编辑器、cropper、Highcharts、justgage、plupload等各类适应本...

Coffey
2017/02/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

3_数组

3_数组

行者终成事
今天
7
0
经典系统设计面试题解析:如何设计TinyURL(二)

原文链接:https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
今天
7
0
使用logstash同步MySQL数据到ES

概述   在生成业务常有将MySQL数据同步到ES的需求,如果需要很高的定制化,往往需要开发同步程序用于处理数据。但没有特殊业务需求,官方提供的logstash就很有优势了。   在使用logstas...

zxiaofan666
今天
10
0
X-MSG-IM-分布式信令跟踪能力

经过一周多的鏖战, X-MSG-IM的分布式信令跟踪能力已基本具备, 特点是: 实时. 只有要RX/TX就会实时产生信令跟踪事件, 先入kafka, 再入influxdb待查. 同时提供实时sub/pub接口. 完备. 可以完整...

dev5
今天
7
0
OpenJDK之CyclicBarrier

OpenJDK8,本人看的是openJDK。以前就看过,只是经常忘记,所以记录下 图1 CyclicBarrier是Doug Lea在JDK1.5中引入的,作用就不详细描述了,主要有如下俩个方法使用: await()方法,如果当前线...

克虏伯
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部