Adaboost算法

AdaBoost是典型的Boosting算法。Boosting提升算法,是将“弱学习算法“提升为“强学习算法”的过程,主要思想是“三个臭皮匠顶个诸葛亮”。先将样本数据输入到开始的弱学习器,一般弱学习器是决策树算法,然后通过弱学习器的偏差,更新样本的权重,差别越大样本权重就增大,然后重复迭代上一步骤,得到强学习器。Boosting算法要涉及到两个部分,加法模型和前向分步算法。加法模型就是说强分类器由一系列弱分类器线性相加而成。一般组合形式如下:

sdfsfdsd


#导入包

import numpy as np

import matplotlib.pyplot as plt

import matplotlib as mpl

from sklearn.ensemble import AdaBoostClassifier#adaboost引入方法

from sklearn.tree import DecisionTreeClassifier

from sklearn.datasets import make_gaussian_quantiles#造数据

## 设置属性防止中文乱码

mpl.rcParams['font.sans-serif'] = [u'SimHei']

mpl.rcParams['axes.unicode_minus'] = False

## 创建数据

X1, y1 = make_gaussian_quantiles(cov=2.,

                                n_samples=200, n_features=2,

                                n_classes=2, random_state=1)#创建符合高斯分布的数据集

X2, y2 = make_gaussian_quantiles(mean=(3, 3), cov=1.5,

                                n_samples=300, n_features=2,

                                n_classes=2, random_state=1)

X = np.concatenate((X1, X2))

y = np.concatenate((y1, - y2 + 1))

#构建adaboost模型

bdt = AdaBoostClassifier(DecisionTreeClassifier(max_depth=1),

                        algorithm="SAMME.R",#可以不写

                        n_estimators=200)

#数据量大的时候,可以增加内部分类器的树深度,也可以不限制树深

#max_depth树深,数据量大的时候,一般范围在10——100之间

#数据量小的时候,一般可以设置树深度较小,或者n_estimators较小

#n_estimators 迭代次数或者最大弱分类器数:200次

#base_estimator:DecisionTreeClassifier 选择弱分类器,默认为CART树

#algorithm:SAMME 和SAMME.R 。运算规则,后者是优化算法,以概率调整权重,迭代速度快,

#需要能计算概率的分类器支持

#learning_rate:0

plot_step = 0.02

x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1

y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1

xx, yy = np.meshgrid(np.arange(x_min, x_max, plot_step),

                    np.arange(y_min, y_max, plot_step))

#预测

Z = bdt.predict(np.c_[xx.ravel(), yy.ravel()])

#设置维度

Z = Z.reshape(xx.shape)

## 画图

plot_colors = "br"

class_names = "AB"

plt.figure(figsize=(10, 5), facecolor='w')

#局部子图

plt.subplot(121)

plt.pcolormesh(xx, yy, Z, cmap=plt.cm.Paired)

for i, n, c in zip(range(2), class_names, plot_colors):

    idx = np.where(y == i)

    plt.scatter(X[idx, 0], X[idx, 1],

                c=c, cmap=plt.cm.Paired,

                label=u"类别%s" % n)

plt.xlim(x_min, x_max)

plt.ylim(y_min, y_max)

plt.legend(loc='upper right')

plt.xlabel('x')

plt.ylabel('y')

plt.title(u'AdaBoost分类结果,正确率为:%.2f%%' % (bdt.score(X, y) * 100))

#获取决策函数的数值

twoclass_output = bdt.decision_function(X)

#获取范围

plot_range = (twoclass_output.min(), twoclass_output.max())

plt.subplot(122)

for i, n, c in zip(range(2), class_names, plot_colors):

#直方图

    plt.hist(twoclass_output[y == i],

            bins=20,

            range=plot_range,

            facecolor=c,

            label=u'类别 %s' % n,

            alpha=.5)

x1, x2, y1, y2 = plt.axis()

plt.axis((x1, x2, y1, y2 * 1.2))

plt.legend(loc='upper right')

plt.ylabel(u'样本数')

plt.xlabel(u'决策函数值')

plt.title(u'AdaBoost的决策值')

plt.tight_layout()

plt.subplots_adjust(wspace=0.35)

plt.show()



©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容