极限学习机ELM原理与实现

2023-10-29

极限学习机(ELM)是当前一类非常热门的机器学习算法,被用来训练单隐层前馈神经网络(SLFN)。本篇博文尽量通俗易懂地对极限学习机的原理进行详细介绍,之后分析如何用python实现该算法并对代码进行解释。
1. 算法的原理
极限学习机(ELM)用来训练单隐藏层前馈神经网络(SLFN)与传统的SLFN训练算法不同,极限学习机随机选取输入层权重和隐藏层偏置,输出层权重通过最小化由训练误差项和输出层权重范数的正则项构成的损失函数,依据Moore-Penrose(MP)广义逆矩阵理论计算解析求出。理论研究表明,即使随机生成隐藏层节点,ELM仍保持SLFN的通用逼近能力。在过去的十年里,ELM的理论和应用被广泛研究,从学习效率的角度来看,极限学习机具有训练参数少、学习速度快、泛化能力强的优点。
极限学习机的隐藏层节点数为 L,与单隐层前馈神经网络的结构一样,极限学习机的网络结构如下图所示:
在这里插入图片描述
极限学习机ELM是一类Single-hidden Layer Feedforward Neural Network(SLFNs)算法,由Huang等基于 Moore-Penrose 广义逆的理论提出,主要针对SLFNs中存在的学习速率慢,迭代时间长,学习参数如学习步长、学习率需要人为提前设置等问题。与传统的神经网络学习算法相比,ELM只需要设置合适的隐层节点数,随机生成隐层所需所有参数,利用最小二乘法确定输出层权值。整个学习过程只需一步而无需多次更新隐层参数。正是因为ELM算法的快速学习能力以及较强的非线性逼近能力等特点,使得ELM在实际应用中受到了研究者们的青睐。例如ELM及改进算法被广泛应用于故障检测、时间序列预测、姿态识别、化学分析、医疗诊断、智能供电等领域。

算法的推导见:ELM原理

在此基础上对,正则化极限学习机(RELM)、在线学习的极限学习机(OS-ELM)、带遗忘机制的在线学习极限学习机(FOS-ELM)使用python进行了实现,并基于一个简单的数据集对三种算法进行了比较,并比较了不同隐藏层节点对性能的影响。

# In[]
# 不同算法和隐藏层结果对比
class_dict = {"ELM":RELM_HiddenLayer,"OS_DELM":OS_DELM_HiddenLayer,"FOS_DELM":FOS_DELM_HiddenLayer}
funcs = ["ELM","OS_DELM","FOS_DELM"]
lists = {"ELM":[[],[]],"OS_DELM":[[],[]],"FOS_DELM":[[],[]]}
results = []
for func in funcs:
    list_ = lists[func]
    for j in range(1, 500, 20):
        func_ = class_dict[func]
        a = func_(X_train, j)
        a.classifisor_train(Y_train)
        predict = a.classifisor_test(X_test)
        pre = metrics.precision_score(predict, Y_true, average='macro')
        list_[0].append(j)
        list_[1].append(pre)
    results.append(list_)
plt.plot(results[0][0],results[0][1],label="ELM")
plt.plot(results[1][0],results[1][1],label="OS_DELM")
plt.plot(results[2][0],results[2][1],label="FOS_DELM")
plt.xlabel("n_hidden")
plt.ylabel("accuracy")
plt.legend()
plt.savefig("ELM.png")
plt.show()

在这里插入图片描述
全部代码下载:python+RELM+OS-ELM+FOS-ELM+代码实现-实例验证+算法比较.rar

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

极限学习机ELM原理与实现 的相关文章

  • Python 和 Numpy 是 nan 和 set

    我在使用 Python 的 Numpy set 和 NaN 非数字 时遇到了不可预测的行为 gt gt gt set np float64 nan np float64 nan set nan nan gt gt gt set np flo
  • Tkinter:消息小部件中锚点选项的正确值是多少?

    我一直在学习 tkinterTkinter 中的消息小部件 https python course eu tkinter message widget in tkinter php at Python 课程和教程 https python
  • 如何指定聚类的距离函数?

    我想对给定距离的点进行聚类 奇怪的是 似乎 scipy 和 sklearn 聚类方法都不允许指定距离函数 例如 在sklearn cluster AgglomerativeClustering 我唯一可以做的就是输入一个亲和力矩阵 这将非常
  • Flask中使用的路由装饰器是如何工作的

    我熟悉 Python 装饰器的基础知识 但是我不明白这个用于 Flask 路由的特定装饰器是如何工作的 以下是 Flask 网站上的代码片段 from flask import Flask escape request app Flask
  • 从字典的元素创建 Pandas 数据框

    我正在尝试从字典创建一个 pandas 数据框 字典设置为 nvalues y1 1 2 3 4 y2 5 6 7 8 y3 a b c d 我希望数据框仅包含 y1 and y2 到目前为止我可以使用 df pd DataFrame fr
  • 定义Python源代码编码的正确方法

    PEP 263 http www python org dev peps pep 0263 定义如何声明Python源代码编码 通常 Python 文件的前两行应以以下内容开头 usr bin python coding
  • 如何使用 python 的 http.client 准确读取一个响应块?

    Using http client在 Python 3 3 或任何其他内置 python HTTP 客户端库 中 如何一次读取一个分块 HTTP 响应一个 HTTP 块 我正在扩展现有的测试装置 使用 python 编写 http clie
  • 指示电子邮件的类型

    我有以下自动化程序 它将电子邮件发送给我自己 并添加了特定的链接 import win32com client as win32 import easygui import tkinter as to from tkinter import
  • 检查 python 中命令行参数的数量

    我是蟒蛇新手 还是把脚弄湿了 我正在尝试做这样的事情 import sys if len sys argv lt 3 or lt len sys argv gt 3 print This script will compare two fi
  • 使用 Pytest 的参数化添加测试功能的描述

    当其中一个测试失败时 可以在测试正在测试的内容的参数化中添加描述 快速了解测试失败的原因 有时您不知道测试失败的原因 您必须查看代码 通过每个测试的描述 您就可以知道 例如 pytest mark parametrize num1 num2
  • 如何将 sql 数据输出到 QCalendarWidget

    我希望能够在日历小部件上突出显示 SQL 数据库中的一天 就像启动程序时突出显示当前日期一样 在我的示例中 它是红色突出显示 我想要发生的是 当用户按下突出显示的日期时 数据库中日期旁边的文本将显示在日历下方的标签上 这是我使用 QT De
  • 如何在 Python 中的函数入口、内部和退出处进行日志记录

    我希望能够使用 Python 日志记录工具在我的代码中进行简单且一致的日志记录 我能够执行以下操作 我希望所有现有 未来的模块和函数都有 输入 和 完成 日志消息 我不想添加相同的代码片段来定义日志记录参数 如下所示don t want t
  • PIL.Image.open和tf.image.decode_jpeg返回值的区别

    我使用 PIL Image open 和 tf image decode jpeg 将图像文件解析为数组 但发现PIL Image open 中的像素值与tf image decode jpeg不一样 为什么会出现这种情况 Thanks 代
  • 为什么在Python解释器中输入_会返回True? [复制]

    这个问题在这里已经有答案了 我的翻译行为非常奇怪 gt gt gt True gt gt gt type True
  • numpy:如何连接数组? (获得多个范围的并集)

    我使用Pythonnumpy 我有一个 numpy 索引数组a gt gt gt a array 5 7 12 18 20 29 gt gt gt type a
  • 为正则表达式编写解析器

    即使经过多年的编程 我很羞愧地说我从未真正完全掌握正则表达式 一般来说 当问题需要正则表达式时 我通常可以 在一堆引用语法之后 想出一个合适的正则表达式 但我发现自己越来越频繁地使用这种技术 所以 自学并理解正则表达式properly 我决
  • 使用 selenium 和 python 来提取 javascript 生成的 HTML?萤火虫?

    这里是Python新手 我遇到的是数据收集问题 我在这个网站上 当我用 Firebug 检查我想要的元素时 它显示了包含我需要的信息的源 然而常规源代码 没有 Firebug 不会给我这个信息 这意味着我也无法通过正常的 selenium
  • django jet 中的自定义徽标

    我目前正在尝试对 django 管理面板的皮肤进行一些定制 以使其更符合我们的品牌 目前我们使用 django jet 来美化管理面板 django jet 可以自定义 css html 吗 所有评论都说我应该更改一些 html 文件 但我
  • 如何在 scikit 中加载 CSV 数据并将其用于朴素贝叶斯分类

    尝试加载自定义数据以在 Scikit 中执行 NB 分类 需要帮助将示例数据加载到 Scikit 中 然后执行 NB 如何加载目标的分类值 使用相同的数据进行训练和测试 或使用完整的数据集进行测试 Sl No Member ID Membe
  • Jupyter Notebook:带有小部件的交互式绘图

    我正在尝试生成一个依赖于小部件的交互式绘图 我遇到的问题是 当我使用滑块更改参数时 会在前一个绘图之后完成一个新绘图 而我预计只有一个绘图会根据参数发生变化 Example from ipywidgets import interact i

随机推荐

  • Android WebView打不开网页

    今天给公司前端同事打了个webview测试包 发现页面打不开 有两个原因 1 测试webview包没有配置好 特别是缓存没配置的同事用到h5缓存就打不开了 正确配置如下 设置支持javascript webView getSettings
  • Python第三方拓展包(安装下载方法)

    找到安装的位置 第一种方法 Anaconda集成环境 Anaconda集成环境 优点太多了 百度一大堆介绍 Anaconda的优点总结起来就八个字 省时省心 分析利器 省时省心 Anaconda通过管理工具包 开发环境 Python版本 大
  • JS点击计数存储案例

    项目功能要求 点击页面红色块默认不计数 点击开始按钮后再点击红色块则开始计数 点击结束按钮后再点击红色块则不计数 关闭页面并再次打开页面 界面会显示上次关闭页面时的计数值 代码设计 本项目结合了前端页面的设计和JS的使用 具体代码如下
  • 编译器工具 Flex Bison for Windows 简单入门例子

    最近从事一个系统仿真软件的开发 里面定义了自己的描述性语言MSL MSL语言经FlexBison转换成C语言 然后用C编译器来编译并计算仿真 现在领域驱动开发比较热门 有机会定义自己的语言对程序员来说是比较有成就感的 免不了要去学习编译原理
  • 笔记本电脑电池怎么拆_笔记本电脑电池的容量单位是Wh,手机是mAh,二者怎么比较?...

    Hello大家好 我是兼容机之家的小牛 目前很多轻薄本都搭载了全功能的Type C接口 大都支持PD充电 所以有的机友出门的时候就不会带上笔记本的 板砖 适配器了 往往会选择购买一个手机 电脑通用的PD充电器 大家平时都知道自己的手机电量是
  • steam创客教室

    人生不同阶段都有不同的使命 在学生阶段 学习掌握知识 为他们以后的人生获得成就的能力 就是他们这个阶段最重要的使命 格物斯坦小坦克的学生生涯也是这样做的 为了这个使命 他们必须要学习忍耐 学会放弃 学会付出 这不仅仅是学习的需要 也是人生的
  • 用 Python 爬取股票实时数据

    今天我们一起来学习一个 Python 爬虫实战案例 我们的目标网站就是东方财富网 废话不多说 开搞 网站分析 东方财富网地址如下 http quote eastmoney com center gridlist html hs a boar
  • 解读Android LOG机制的实现:(5)获取LOG的应用程序LogCat

    解读Android LOG机制的实现 5 获取LOG的应用程序LogCat 田海立 CSDN 2011 07 27 Android提供的LOG机制的实现贯穿了Java JNI 本地c c 实现以及LINUX内核驱动等Android的各个层次
  • 三步教你实现MyEclipse的debug远程调试

    MyEclipse远程调试程序是个神奇的东西 有时一个项目本地运行没问题可放到服务器上 同样的条件就是结果不一样 有时服务器上工程出点问题需要远程调测 于是就灰常想看一下程序在远程运行时候的状态 希望让程序在远程运行 还可以在本机打断点跟一
  • 执行力的关键在于中层,成败的关键在于细节

    编者注 这是一位国内著名企业总裁在一次工作会议上的讲话 文中说到完美的 细节 一定是完美执行力的结果 并且切中时弊的指出 执行力的关键在于中层 如何做到这一点 关键就是要建立一个保证中层执行力到位的强势文化 也许真正落实到位 不但首先会冲击
  • Nodejs

    一 是什么 中间件 Middleware 是介于应用系统和系统软件之间的一类软件 它使用系统软件所提供的基础服务 功能 衔接网络上应用系统的各个部分或不同的应用 能够达到资源共享 功能共享的目的 在NodeJS中 中间件主要是指封装http
  • 华为OD机试 - 阿里巴巴找黄金宝箱(IV)(Java)

    题目描述 一贫如洗的樵夫阿里巴巴在去砍柴的路上 无意中发现了强盗集团的藏宝地 藏宝地有编号从0 N的箱子 每个箱子上面有一个数字 箱子排列成一个环 编号最大的箱子的下一个是编号为0的箱子 请输出每个箱了贴的数字之后的第一个比它大的数 如果不
  • java爱心效果代码来了

    爱心 代码来了 村上春树说 仪式是一件很重要的事 现实生活被琐事充斥 仪式感总是被人遗忘 凑合的晚饭 乱丢的衣物 杂乱无章的生活让原本平淡的生活过得一潭死水 找不到生活的乐趣 童话 小王子 里狐狸对小王子说 你最好在每天相同的时间来 比如你
  • scrapy提高爬取速度

    scrapy在单机跑大量数据的时候 在对settings文件不进行设置的时候 scrapy的爬取速度很慢 再加上多个页面层级解析 往往导致上万的数据可能爬取要半个小时之久 这还不包括插入数据到数据库的操作 下面是我在实验中测试并且验证爬取速
  • Docker 之桥接网络(一)

    参考 https docs docker com network bridge 在网络方面 桥接网络是一个链路层设备 它在网络段之间转发流量 网桥可以是运行在主机内核中的硬件设备或软件设备 就Docker而言 桥接网络使用软件桥 允许连接到
  • Windows下配置环境变量

    Windows下配置环境变量 在安装某些软件或者应用程序时 需要配置环境变量 以便在后续可以正常使用 环境变量相当于给系统或用户应用程序设置一些参数 具体起什么作用和对应的环境变量相关 比如path 是告诉系统 当要求系统运行一个程序而没有
  • React 18的新特新

    React 18 最新的特性 批处理文件 在同一个 函数中 调用多次 useState 也只是会更新一次 function App const count setCount useState 0 const flag setFlag use
  • 基于51单片机的水位液位温度监测鱼缸系统仿真原理图程序

    硬件设计 上一篇咱们讲了基于数码管显示的液位检测 本章讲一下基于LCD1602显示的液位检测 同时伴有温度测量 该系统可应用于鱼缸 水塔 水箱的检测 本系统液位检测方案是基于液位传感器 通过传感器嵌入液体反馈回电信号 通过电信号的大小可以反
  • 如何利用python将一个list中的数字提取,然后求和?

    coding UTF 8 import re name score list u 唐僧 100 u 猪八戒 60 u 孙悟空 95 u 沙和尚 80 1 将score list列表转换为以 为分隔符的字符串 name score list
  • 极限学习机ELM原理与实现

    极限学习机 ELM 是当前一类非常热门的机器学习算法 被用来训练单隐层前馈神经网络 SLFN 本篇博文尽量通俗易懂地对极限学习机的原理进行详细介绍 之后分析如何用python实现该算法并对代码进行解释 1 算法的原理 极限学习机 ELM 用