adaboost算法java代码_04-04 AdaBoost算法代码(鸢尾花分类)
[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算法代码(鸢尾花分类)相关推荐
- 基于界面的银行家算法java实现_java实现银行家算法(Swing界面)
java代码实现了银行家算法,界面写的个人认为还是较为细致的,完整的实现了找安全序列等算法功能,可作为参考学习银行家算法. 直接上代码:①界面展示方法: public void ShowFrame() ...
- dijkstra算法 java eclipse_数学:Dijkstra算法
一.最短路径的最优子结构性质 该性质描述为:如果P(i,j)={Vi....Vk..Vs...Vj}是从顶点i到j的最短路径,k和s是这条路径上的一个中间顶点,那么P(k,s)必定是从k到s的最短路径 ...
- ls算法java实现_Java API之算法 | 学步园
本节中所描述的多态 排序(Sorting) 排序算法可为一个 List 重新排序,以使它的元素按照某种排序关系成上升式排序.有两种形式的操作被提供.简单形式的操作只采用一个 List 并按照它的元素的 ...
- 数据结构和算法 java实现_数据结构与算法——常用数据结构及其Java实现
前言 仿佛一下子,2017年就快过去一半了,研一马上就要成为过去式了,我打算抓住研一的尾巴,好好梳理一下数据结构与算法,毕竟这些基础知识是很重要的嘛.所以准备在这里搞一个系列的文章,以期透彻. 本系列 ...
- 蚁群算法java实现_蚁群算法java实现以及TSP问题蚁群算法求解
1. 蚁群算法简介 蚁群算法(Ant Clony Optimization, ACO)是一种群智能算法,它是由一群无智能或有轻微智能的个体(Agent)通过相互协作而表现出智能行为,从而为求解复杂问题 ...
- dv算法java实现_各种排序算法的分析及java实现(二)
更多精彩,请点击上方蓝字关注我们! 上次跟大家分享了下各种排序算法的分析及java实现(一)的相关知识,今天跟大家分享各种排序算法的分析及java实现(二)的知识.昨天我们讲到了选择排序,今天我们继续 ...
- md5 算法java实现_java实现MD5算法
import java.security.MessageDigest; /** 加密工具* @author 刘彦青 * **/ public class EncryptUtil { /** MD5加密 ...
- 最近最少使用LRU(Least Recently Used)算法java实现
最近最少使用LRU(Least Recently Used)算法java实现 一.使用LinkedHashMap算法实现 二.手撸 LRU 算法实现(Hash表 + 双向链表) 三.总结 最近最少使用 ...
- 数据结构与算法Java(二)——字符串、矩阵压缩、递归、动态规划
不定期补充.修正.更新:欢迎大家讨论和指正 本文以数据结构(C语言版)第三版 李云清 杨庆红编著为主要参考资料,用Java来实现 数据结构与算法Java(一)--线性表 数据结构与算法Java(二)- ...
最新文章
- R语言ggplot2可视化时间序列散点图、X轴和Y轴都是时间信息、使用as.POSIXct函数自定义指定Y轴的时间范围(setting time limits in y axis)
- [置顶] 也论百度轻应用--一个开发者的吐槽
- 设计模式:单例模式之饿汉式
- '$.browser.msie' 为空或不是对象
- dynamic_cast详解
- QT QML 在qml中自定义信号
- python的枚举函数_enumerate()函数~~返回一个枚举对象
- 自己的包增加为第三方包,使用Eclipse环境报Unresolved import错误(pycharm可用正常引用)...
- Jupyter 同时支持python2、python3 kernel
- android 常用输入法,[转载]Android 系统输入法的调用
- jQuery jqGrid 文档
- i3wm中Chrome不保存密码
- C语言存储误差,C语言实现测量数据误差处理
- 微信小程序最新富文本编辑器使用功能实例教程
- 原生Ajax详细获取数据
- 新文件泄露更多NSA卫星监听站的信息
- 局部钩子能防全局钩子吗_这个英雄还值得我们去练吗?百里玄策打法难点解析...
- 2020年节假日JSON,全年日期对应的上班日、周末、节假日
- openstack-M版,学习笔记六
- corsswalk的研究和使用(一)
热门文章
- SAP UI5 应用开发教程之六十二 - 基于 OData V4 的 SAP UI5 表格控件使用方法介绍
- 乐高(LEGO)在线购物店面剖析
- SAP Spartacus Template-Driven Outlets
- RxJS CombineLatest operator 的一个具体使用例子
- SAP Spartacus部署到SAP Commerce Cloud,不同的系统设置不同的OCC Base url
- Angular路由开发的一个实际例子
- SAP Analytics Cloud里根据数据的经纬度绘制地图
- why I need register Apache CXF as servlet
- pageSet还没完count就执行了
- Why close date in S2 view is not displayed correctly after clicking it