机器学习神经网络——Adaboost分离器算法

这篇具有很好参考价值的文章主要介绍了机器学习神经网络——Adaboost分离器算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系列文章目录

 机器学习之SVM分类器介绍——核函数、SVM分类器的使用

 机器学习的一些常见算法介绍【线性回归,岭回归,套索回归,弹性网络】

机器学习相关概念思维导图

文章目录

系列文章目录

前言

Adaboost算法的简单介绍

Adaboost算法相关函数简介

案例介绍

1、简单的Adaboost回归的示例

2、案例二

总结


前言

本文主要介绍Adaboost集成学习算法,以及一些案例举例

Adaboost算法的简单介绍

Adaboost是一种集成学习算法,用于构建一个强大的分类器或回归器。在Adaboost中,每个弱分类器/回归器都是由弱学习算法(例如决策树或线性回归)构成的。每个弱分类器/回归器都对样本进行分类或预测,并根据分类/预测的准确性进行加权。然后,所有弱分类器/回归器的加权和被用作最终分类器/回归器。Adaboost算法通过迭代地训练弱分类器/回归器,并调整样本的权重来提高整体模型的准确性。

Adaboost算法相关函数简介

Adaboost的相关函数包括AdaBoostClassifier和AdaBoostRegressor。这些函数都可以在sklearn.ensemble中找到。其中AdaBoostClassifier用于分类问题,AdaBoostRegressor用于回归问题。这些函数都包含许多参数,例如弱学习器,学习率和迭代次数。

案例介绍

1、简单的Adaboost回归的示例

import numpy as np
from sklearn.ensemble import AdaBoostRegressor
from sklearn.tree import DecisionTreeRegressor

# 生成训练数据
X = np.linspace(-np.pi, np.pi, 200)
y = np.sin(X)

# 创建决策树回归器
dt = DecisionTreeRegressor(max_depth=2)

# 创建Adaboost回归器
abr = AdaBoostRegressor(dt, n_estimators=100, learning_rate=0.1)

# 训练模型
abr.fit(X.reshape(-1, 1), y)

# 绘制结果
import matplotlib.pyplot as plt
plt.scatter(X, y, c='b', label='data')
plt.plot(X, abr.predict(X.reshape(-1, 1)), c='r', label='Adaboost Regressor')
plt.legend()
plt.show()

在这个例子中,我们使用Adaboost回归器来拟合正弦函数。我们使用决策树回归器作为弱学习器,并设置迭代次数为100,学习率为0.1。在训练完模型后,我们绘制了训练数据和拟合结果。

2、案例二

使用Adaboost分类器(基于SVM、决策树)对乳腺癌数据进行对比分析

#使用Adaboost分类器(基于SVM、决策树)对乳腺癌数据进行对比分析
#导入sklearn内置数据集 
from sklearn.datasets import load_breast_cancer
#导入乳腺癌数据
cancer =load_breast_cancer()
#导入sklearn中的模型验证类 
from sklearn.model_selection import train_test_split
#使用train_ test_split函数自动分割训练数据集和测试数据集
x_train,x_test,y_train,y_test = train_test_split(cancer.data,cancer.target,test_size=0.3)
#导人sklearn模块中的SVM包 
from sklearn import svm
svc = svm.SVC(kernel='linear',gamma=5)
svc.fit(x_train,y_train)
print("单个sVC在训练集上的性能:%.3f"%svc.score(x_train,y_train))
print("单个sVC在测试集上的性能:%.3f"%svc.score(x_test,y_test))
#导人sklearn模块中的AdaBoost分类器类 
from sklearn.ensemble import AdaBoostClassifier
#定义一个AdaBoost分类器对象,使用SVC分类器作为基分类器
abcl = AdaBoostClassifier(svm.SVC(kernel='linear',gamma=5),algorithm="SAMME",n_estimators=50,learning_rate=0.1)
abcl.fit(x_train,y_train)
print("nAdaBoot(SVC)在训练集上的性能:%.3f"%(abcl.score(x_train,y_train)))
print("AdaBoot(SVC)在测试集上的性能:%.3f"%(abcl.score(x_test,y_test)))
#导入sklearn模块中的决策树分类器类 
from sklearn.tree import DecisionTreeClassifier 
dtc = DecisionTreeClassifier()
dtc.fit(x_train,y_train)
print("单棵决策树在训练集上的性能:%.3f"%dtc.score(x_train,y_train))
print("单棵决策树在测试集上的性能:%.3f"%dtc.score(x_test,y_test))
#定义一个AdaBoost分类器对象,使用决策树分类器作为基分类器
abc2 = AdaBoostClassifier(DecisionTreeClassifier(),algorithm="SAMME",n_estimators=50,learning_rate=0.1)
abc2.fit(x_train,y_train)
print("\nAdaBoot(决策树)在训练集上的性能:%.3f"%abc2.score(x_train,y_train))
print("AdaBoot(决策树)在测试集上的性能:%.3f"%abc2.score(x_test,y_test))#输出二分类指标
y_predict =abcl.predict(x_test)
from sklearn import metrics
print('\n测试集混淆矩阵:\n',metrics.confusion_matrix(y_test,y_predict))
print('测试集准确率:%.3f'%(metrics.accuracy_score(y_test,y_predict)))
print('测试集精度:%.3f'%(metrics.precision_score(y_test,y_predict)))
print('测试集召回率:%.3f'%(metrics.recall_score(y_test,y_predict)))
print('测试集F1值:%.3f'%(metrics.f1_score(y_test,y_predict)))
print('测试集Fbeta值(beta=0.1):%.3f'%(metrics.fbeta_score(y_test,y_predict,beta=0.1)))
print('测试集Fbeta值(beta=10):%.3f'%(metrics.fbeta_score(y_test,y_predict,beta=10)))
print('测试集分类报告:\n',metrics.classification_report(y_test,y_predict,target_names=['class_0','class_I']))#观察弱分类器数量在测试集上分类准确度
abc_train_scores=[]
abc_test_scores=[] 
for i in range(1,50):
    abc = AdaBoostClassifier(DecisionTreeClassifier(),n_estimators=i)
    abc.fit(x_train,y_train)
    abc_train_scores.append(abc.score(x_train,y_train))
    abc_test_scores.append(abc.score(x_test,y_test))
import matplotlib.pyplot as plt
#解决图形中的中文显示乱码
plt.rcParams['font.sans-serif'] = ['SimHei']
#解决图形中的坐标轴负号显示问题
plt.matplotlib.rcParams['axes.unicode_minus']=False
plt.figure()
plt.title("AdaBoost算法在测试集上的性能")
plt.xlabel("基分类器数量")
plt.ylabel("准确率")
plt.plot(range(1,50),abc_train_scores,color='b',label='测试集')
plt.plot(range(1,50),abc_test_scores,color='r',label='训练集')
plt.legend()
plt.show()

运行结果:

单个sVC在训练集上的性能:0.965
单个sVC在测试集上的性能:0.959
nAdaBoot(SVC)在训练集上的性能:0.945
AdaBoot(SVC)在测试集上的性能:0.959
单棵决策树在训练集上的性能:1.000
单棵决策树在测试集上的性能:0.936

AdaBoot(决策树)在训练集上的性能:1.000
AdaBoot(决策树)在测试集上的性能:0.947

测试集混淆矩阵:
 [[66  5]
 [ 2 98]]
测试集准确率:0.959
测试集精度:0.951
测试集召回率:0.980
测试集F1值:0.966
测试集Fbeta值(beta=0.1):0.952
测试集Fbeta值(beta=10):0.980
测试集分类报告:
               precision    recall  f1-score   support

     class_0       0.97      0.93      0.95        71
     class_I       0.95      0.98      0.97       100

    accuracy                           0.96       171
   macro avg       0.96      0.95      0.96       171
weighted avg       0.96      0.96      0.96       171

机器学习神经网络——Adaboost分离器算法

 文章来源地址https://www.toymoban.com/news/detail-460274.html

总结

以上就是今天的内容~

最后欢迎大家点赞👍,收藏⭐,转发🚀,
如有问题、建议,请您在评论区留言💬哦。

 

到了这里,关于机器学习神经网络——Adaboost分离器算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器学习-有监督学习-神经网络

    向量版本 y = ⟨ w , x ⟩ + b y = langle w, x rangle + b y = ⟨ w , x ⟩ + b 懂得两者区别 激活函数,损失函数 感知机模型的本质是线性模型,再加上激活函数 训练数据、损失函数、梯度下降,小批量梯度下降 神经网络算法整体流程: 初始化网络 前向传播 计算损失 计算微分 梯度下

    2024年02月07日
    浏览(37)
  • 【机器学习】——深度学习与神经网络

    目录 引入 一、神经网络及其主要算法 1、前馈神经网络 2、感知器 3、三层前馈网络(多层感知器MLP) 4、反向传播算法 二、深度学习 1、自编码算法AutorEncoder 2、自组织编码深度网络 ①栈式AutorEncoder自动编码器 ②Sparse Coding稀疏编码 3、卷积神经网络模型(续下次) 拓展:

    2024年02月09日
    浏览(31)
  • 机器学习 | 卷积神经网络

    采用任意一种课程中介绍过的或者其它卷积神经网络模型(例如LeNet-5、AlexNet等)用于解决某种媒体类型的模式识别问题。 卷积神经网络可以基于现有框架如TensorFlow、Pytorch或者Mindspore等构建,也可以自行设计实现。 数据集可以使用手写体数字图像标准数据集,也可以自行构

    2024年01月17日
    浏览(29)
  • 【机器学习】神经网络

    神经网络:一种计算模型,由大量的节点(或神经元)直接相互关联而构成。每个节点(除输入节点外)代表一种特定的输出函数(或者认为是运算),称为激励函数;每两个节点的连接都代表该信号在传输中所占的比重(即认为该信号对该节点的影响程度) 神经网络三要素:模型、策略

    2024年02月15日
    浏览(64)
  • 【机器学习】神经网络入门

    如果对于下图使用Logistics回归算法,如果只有x1和x2两个特征的时候,Logistics回归还是可以较好地处理的。它可以将x1和x2包含到多项式中 但是有很多问题所具有的特征远不止两个,甚至是上万个,如果我们想要包含很多特征,那Logistics回归的假设函数将会相当复杂。这些多项

    2024年02月08日
    浏览(72)
  • 【头歌】机器学习 --- 神经网络

    第1关:神经网络基本概念 第2关:激活函数 第3关:反向传播算法  第4关:使用pytorch搭建卷积神经网络识别手写数字

    2024年02月04日
    浏览(35)
  • 机器学习 —— 神经网络(matlab)

    目录 一、介绍 二、实验数学原理 三、实验算法和实验步骤 四、实例分析         神经网络是一种运算模型,由大量的节点(或称“神经元”,或“单元”)和之间相互联接构成。每个节点代表一种特定的输出函数,称为激励函数(activation function)。每两个节点间的连接

    2024年02月05日
    浏览(26)
  • 机器学习——RBF神经网络

    本文部分资料与案例来源:《MATLAB神经网络43个案例分析》 再介绍RBF神经网络之前我们先来看一下径向基函数(RBF),在百度百科上,RBF定义如下: 径向基函数是一个取值仅仅依赖于离原点距离的实值函数,也就是Φ(x)=Φ(‖x‖),或者还可以是到任意一点c的距离,c点称为中

    2024年02月08日
    浏览(40)
  • 机器学习-神经网络(西瓜书)

    在生物神经网络中,神经元之间相互连接,当一个神经元受到的外界刺激足够大时,就会产生兴奋(称为\\\"激活\\\"),并将剩余的\\\"刺激\\\"向相邻的神经元传导。 神经元模型 模型中 x i x_i x i ​ 表示各个神经元传来的刺激,刺激强度有大有小,所以 w i w_i w i ​ 表示不同刺激的权重

    2024年02月11日
    浏览(24)
  • 预测知识 | 神经网络、机器学习、深度学习

    神经网络 神经网络(neural network)是机器学习的一个重要分支,也是深度学习的核心算法。神经网络的名字和结构,源自人类的大脑构造,即神经网络是模拟生物学中神经元信号传输而形成的一种算法。 机器学习 在开展神经网络或深度学习研究前,需要理清人工智能(AI)、

    2024年02月13日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包