[TOC] 更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智能教学等着你:https://www.cnblogs.com/nickchen121/p/11686958.html

AdaBoost算法代码(鸢尾花分类)

一、导入模块

import numpy as np

import matplotlib.pyplot as plt

from matplotlib.colors import ListedColormap

from matplotlib.font_manager import FontProperties

from sklearn.datasets import load_iris

from sklearn.tree import DecisionTreeClassifier

from sklearn.ensemble import AdaBoostClassifier

%matplotlib inline

font = FontProperties(fname='/Library/Fonts/Heiti.ttc')

二、导入数据

X = iris_data.data[:, [2, 3]]

y = iris_data.target

label_list = ['山鸢尾', '杂色鸢尾', '维吉尼亚鸢尾']

三、构造决策边界

def plot_decision_regions(X, y, classifier=None):

marker_list = ['o', 'x', 's']

color_list = ['r', 'b', 'g']

cmap = ListedColormap(color_list[:len(np.unique(y))])

x1_min, x1_max = X[:, 0].min()-1, X[:, 0].max()+1

x2_min, x2_max = X[:, 1].min()-1, X[:, 1].max()+1

t1 = np.linspace(x1_min, x1_max, 666)

t2 = np.linspace(x2_min, x2_max, 666)

x1, x2 = np.meshgrid(t1, t2)

y_hat = classifier.predict(np.array([x1.ravel(), x2.ravel()]).T)

y_hat = y_hat.reshape(x1.shape)

plt.contourf(x1, x2, y_hat, alpha=0.2, cmap=cmap)

plt.xlim(x1_min, x1_max)

plt.ylim(x2_min, x2_max)

for ind, clas in enumerate(np.unique(y)):

plt.scatter(X[y == clas, 0], X[y == clas, 1], alpha=0.8, s=50,

c=color_list[ind], marker=marker_list[ind], label=label_list[clas])

四、训练模型

4.1 训练模型(n_e=10, l_r=0.8)

adbt = AdaBoostClassifier(DecisionTreeClassifier(max_depth=2, min_samples_split=20, min_samples_leaf=5),

algorithm="SAMME", n_estimators=10, learning_rate=0.8)

adbt.fit(X, y)

AdaBoostClassifier(algorithm='SAMME',

base_estimator=DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=2,

max_features=None, max_leaf_nodes=None,

min_impurity_decrease=0.0, min_impurity_split=None,

min_samples_leaf=5, min_samples_split=20,

min_weight_fraction_leaf=0.0, presort=False, random_state=None,

splitter='best'),

learning_rate=0.8, n_estimators=10, random_state=None)

4.2 可视化

plot_decision_regions(X, y, classifier=adbt)

plt.xlabel('花瓣长度(cm)', fontproperties=font)

plt.ylabel('花瓣宽度(cm)', fontproperties=font)

plt.title('AdaBoost算法代码(鸢尾花分类, n_e=10, l_r=0.8)',

fontproperties=font, fontsize=20)

plt.legend(prop=font)

plt.show()

![png](http://www.chenyoude.com/ml/04-04 AdaBoost算法代码(鸢尾花分类)_11_0.png?x-oss-process=style/watermark)

print("Score:{}".format(adbt.score(X, y)))

Score:0.9866666666666667

4.3 训练模型(n_estimators=300, learning_rate=0.8)

adbt = AdaBoostClassifier(DecisionTreeClassifier(max_depth=2, min_samples_split=20, min_samples_leaf=5),

algorithm="SAMME", n_estimators=300, learning_rate=0.8)

adbt.fit(X, y)

print("Score:{}".format(adbt.score(X, y)))

Score:0.9933333333333333

由于样本太少,可能效果不明显,但是对比上一个模型可以发现,相同步长的情况下,如果弱学习个数越多,拟合效果越好,但如果过多则可能过拟合。

4.4 训练模型(n_estimators=300, learning_rate=0.5)

adbt = AdaBoostClassifier(DecisionTreeClassifier(max_depth=2, min_samples_split=20, min_samples_leaf=5),

algorithm="SAMME", n_estimators=300, learning_rate=0.001)

adbt.fit(X, y)

print("Score:{}".format(adbt.score(X, y)))

Score:0.9533333333333334

相同迭代次数的情况下,对比上一个模型可以发现,如果步长越大,则模型效果越好。

4.5 训练模型(n_estimators=600, learning_rate=0.7)

adbt = AdaBoostClassifier(DecisionTreeClassifier(max_depth=2, min_samples_split=20, min_samples_leaf=5),

algorithm="SAMME", n_estimators=600, learning_rate=0.8)

adbt.fit(X, y)

print("Score:{}".format(adbt.score(X, y)))

Score:0.9933333333333333

对比第二个模型,可以发现即使增加迭代次数,算法准确率也没有提高,所以n_estimators=300的时候其实算法就已经收敛了。

adaboost算法java代码_04-04 AdaBoost算法代码(鸢尾花分类)相关推荐

  1. 基于界面的银行家算法java实现_java实现银行家算法(Swing界面)

    java代码实现了银行家算法,界面写的个人认为还是较为细致的,完整的实现了找安全序列等算法功能,可作为参考学习银行家算法. 直接上代码:①界面展示方法: public void ShowFrame() ...

  2. dijkstra算法 java eclipse_数学:Dijkstra算法

    一.最短路径的最优子结构性质 该性质描述为:如果P(i,j)={Vi....Vk..Vs...Vj}是从顶点i到j的最短路径,k和s是这条路径上的一个中间顶点,那么P(k,s)必定是从k到s的最短路径 ...

  3. ls算法java实现_Java API之算法 | 学步园

    本节中所描述的多态 排序(Sorting) 排序算法可为一个 List 重新排序,以使它的元素按照某种排序关系成上升式排序.有两种形式的操作被提供.简单形式的操作只采用一个 List 并按照它的元素的 ...

  4. 数据结构和算法 java实现_数据结构与算法——常用数据结构及其Java实现

    前言 仿佛一下子,2017年就快过去一半了,研一马上就要成为过去式了,我打算抓住研一的尾巴,好好梳理一下数据结构与算法,毕竟这些基础知识是很重要的嘛.所以准备在这里搞一个系列的文章,以期透彻. 本系列 ...

  5. 蚁群算法java实现_蚁群算法java实现以及TSP问题蚁群算法求解

    1. 蚁群算法简介 蚁群算法(Ant Clony Optimization, ACO)是一种群智能算法,它是由一群无智能或有轻微智能的个体(Agent)通过相互协作而表现出智能行为,从而为求解复杂问题 ...

  6. dv算法java实现_各种排序算法的分析及java实现(二)

    更多精彩,请点击上方蓝字关注我们! 上次跟大家分享了下各种排序算法的分析及java实现(一)的相关知识,今天跟大家分享各种排序算法的分析及java实现(二)的知识.昨天我们讲到了选择排序,今天我们继续 ...

  7. md5 算法java实现_java实现MD5算法

    import java.security.MessageDigest; /** 加密工具* @author 刘彦青 * **/ public class EncryptUtil { /** MD5加密 ...

  8. 最近最少使用LRU(Least Recently Used)算法java实现

    最近最少使用LRU(Least Recently Used)算法java实现 一.使用LinkedHashMap算法实现 二.手撸 LRU 算法实现(Hash表 + 双向链表) 三.总结 最近最少使用 ...

  9. 数据结构与算法Java(二)——字符串、矩阵压缩、递归、动态规划

    不定期补充.修正.更新:欢迎大家讨论和指正 本文以数据结构(C语言版)第三版 李云清 杨庆红编著为主要参考资料,用Java来实现 数据结构与算法Java(一)--线性表 数据结构与算法Java(二)- ...

最新文章

  1. R语言ggplot2可视化时间序列散点图、X轴和Y轴都是时间信息、使用as.POSIXct函数自定义指定Y轴的时间范围(setting time limits in y axis)
  2. [置顶] 也论百度轻应用--一个开发者的吐槽
  3. 设计模式:单例模式之饿汉式
  4. '$.browser.msie' 为空或不是对象
  5. dynamic_cast详解
  6. QT QML 在qml中自定义信号
  7. python的枚举函数_enumerate()函数~~返回一个枚举对象
  8. 自己的包增加为第三方包,使用Eclipse环境报Unresolved import错误(pycharm可用正常引用)...
  9. Jupyter 同时支持python2、python3 kernel
  10. android 常用输入法,[转载]Android 系统输入法的调用
  11. jQuery jqGrid 文档
  12. i3wm中Chrome不保存密码
  13. C语言存储误差,C语言实现测量数据误差处理
  14. 微信小程序最新富文本编辑器使用功能实例教程
  15. 原生Ajax详细获取数据
  16. 新文件泄露更多NSA卫星监听站的信息
  17. 局部钩子能防全局钩子吗_这个英雄还值得我们去练吗?百里玄策打法难点解析...
  18. 2020年节假日JSON,全年日期对应的上班日、周末、节假日
  19. openstack-M版,学习笔记六
  20. corsswalk的研究和使用(一)

热门文章

  1. SAP UI5 应用开发教程之六十二 - 基于 OData V4 的 SAP UI5 表格控件使用方法介绍
  2. 乐高(LEGO)在线购物店面剖析
  3. SAP Spartacus Template-Driven Outlets
  4. RxJS CombineLatest operator 的一个具体使用例子
  5. SAP Spartacus部署到SAP Commerce Cloud,不同的系统设置不同的OCC Base url
  6. Angular路由开发的一个实际例子
  7. SAP Analytics Cloud里根据数据的经纬度绘制地图
  8. why I need register Apache CXF as servlet
  9. pageSet还没完count就执行了
  10. Why close date in S2 view is not displayed correctly after clicking it