Python32 极限学习机ELM

图片

极限学习机(ELM)是一种简单的单层前馈神经网络(SLFN)学习算法。理论上,极限学习机算法(ELM)往往以极快的学习速度提供良好的性能(属于机器学习算法),由Huang等人提出。ELM的主要特点是它的学习速度非常快,相比传统的梯度下降方法(如BP神经网络),ELM不需要迭代过程。其基本原理是随机选择隐藏层的权重和偏置,然后通过最小化输出层的误差来学习输出权重。

图片

img

ELM算法的主要步骤

  1. 随机初始化输入到隐藏层的权重和偏置

    • 隐藏层的权重和偏置是随机生成的,并且在训练过程中保持不变。

  2. 计算隐藏层的输出矩阵(即激活函数的输出)

    • 使用激活函数(如sigmoid、ReLU等)计算隐藏层的输出。

  3. 计算输出权重

    • 通过最小二乘法计算隐藏层到输出层的权重。

ELM的数学公式如下:

  • 给定一个训练数据集 ,其中 ,

  • 隐藏层的输出矩阵 的计算公式为:

    • 其中,是输入矩阵, 是输入到隐藏层的权重矩阵,是偏置向量,是激活函数。

  • 输出权重 的计算公式为:

    • 其中,是隐藏层输出矩阵的广义逆,是输出矩阵。

ELM算法的应用场景

  1. 大规模数据集处理:ELM 在处理大规模数据集时表现良好,因为它的训练速度很快,适用于需要快速训练模型的场景,比如大规模图像分类、自然语言处理等任务。

  2. 工业预测:ELM 在工业预测领域有广泛的应用,比如工业生产过程中的质量控制、设备故障预测等。它可以快速训练预测模型,并对实时数据做出快速响应。

  3. 金融领域:ELM 可以用于金融数据分析和预测,比如股票价格预测、风险管理、信用评分等。由于金融数据通常是高维度的,ELM 的快速训练速度对处理这些数据很有优势。

  4. 医学诊断:在医学领域,ELM 可以用于疾病预测、医学影像分析等任务。它可以快速训练模型,并对患者数据进行分类或回归,帮助医生做出更快速和准确的诊断。

  5. 智能控制系统:ELM 可以用于智能控制系统中,比如智能家居、智能交通系统等。通过学习环境的特征和规律,ELM 可以帮助系统做出智能决策,提高系统的效率和性能。

Python实现ELM算法

我们使用 make_moons 数据集,这是一个常用于机器学习和深度学习分类任务的玩具数据集。它生成的点分布成两个相交的半月形状,非常适合用于展示分类算法的性能和决策边界。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_moons
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import accuracy_score

# 定义极限学习机(ELM)类
class ELM:
    def __init__(self, n_hidden_units):
        # 初始化隐藏层神经元数量
        self.n_hidden_units = n_hidden_units

    def _sigmoid(self, x):
        # 定义Sigmoid激活函数
        return 1 / (1 + np.exp(-x))

    def fit(self, X, y):
        # 随机初始化输入权重
        self.input_weights = np.random.randn(X.shape[1], self.n_hidden_units)
        # 随机初始化偏置
        self.biases = np.random.randn(self.n_hidden_units)
        # 计算隐藏层输出矩阵H
        H = self._sigmoid(np.dot(X, self.input_weights) + self.biases)
        # 计算输出权重
        self.output_weights = np.dot(np.linalg.pinv(H), y)

    def predict(self, X):
        # 计算隐藏层输出矩阵H
        H = self._sigmoid(np.dot(X, self.input_weights) + self.biases)
        # 返回预测结果
        return np.dot(H, self.output_weights)

# 创建数据集并进行预处理
X, y = make_moons(n_samples=1000, noise=0.2, random_state=42)
# 将标签转换为二维数组(ELM需要二维数组作为标签)
y = y.reshape(-1, 1)

# 标准化数据
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# 拆分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.3, random_state=42)

# 训练和比较ELM与MLP

# 训练ELM
elm = ELM(n_hidden_units=10)
elm.fit(X_train, y_train)
y_pred_elm = elm.predict(X_test)
# 将预测结果转换为类别标签
y_pred_elm_class = (y_pred_elm > 0.5).astype(int)
# 计算ELM的准确率
accuracy_elm = accuracy_score(y_test, y_pred_elm_class)

# 训练MLP
mlp = MLPClassifier(hidden_layer_sizes=(10,), max_iter=1000, random_state=42)
mlp.fit(X_train, y_train.ravel())
# 预测测试集结果
y_pred_mlp = mlp.predict(X_test)
# 计算MLP的准确率
accuracy_mlp = accuracy_score(y_test, y_pred_mlp)

# 打印ELM和MLP的准确率
print(f"ELM Accuracy: {accuracy_elm}")
print(f"MLP Accuracy: {accuracy_mlp}")

# 可视化结果
def plot_decision_boundary(model, X, y, ax, title):
    # 设置绘图范围
    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, 0.01),
                         np.arange(y_min, y_max, 0.01))
    # 预测网格中的所有点
    Z = model(np.c_[xx.ravel(), yy.ravel()])
    Z = (Z > 0.5).astype(int)
    Z = Z.reshape(xx.shape)
    # 画出决策边界
    ax.contourf(xx, yy, Z, alpha=0.8)
    # 画出数据点
    ax.scatter(X[:, 0], X[:, 1], c=y.ravel(), edgecolors='k', marker='o')
    ax.set_title(title)

# 创建图形
fig, axs = plt.subplots(1, 2, figsize=(12, 5))

# 画出ELM的决策边界
plot_decision_boundary(lambda x: elm.predict(x), X_test, y_test, axs[0], "ELM Decision Boundary")
# 画出MLP的决策边界
plot_decision_boundary(lambda x: mlp.predict(x), X_test, y_test, axs[1], "MLP Decision Boundary")

# 显示图形
plt.show()

# 输出:
'''
ELM Accuracy: 0.9666666666666667
MLP Accuracy: 0.9766666666666667
'''

可视化输出:

图片

以上内容总结自网络,如有帮助欢迎转发,我们下次再见!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/791603.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Three.js相机简明教程

相机校准是 3D 计算机图形学中的一个基本概念,涉及设置虚拟相机以模拟真实世界相机的视角和行为。在 Three.js(一种流行的 3D 渲染 JavaScript 库)中,了解相机校准对于创建逼真且身临其境的 3D 场景至关重要。在本文中&#xff0c…

CinemachineBrain的属性简介

CinemachineBrain的属性简介 CinemachineBrain是Unity Cinemachine的核心组件,它和Camera组件挂载在一起,监控场景中所有的virtual camera。CinemachineBrain在inspector中暴露的属性如下: Live Camera和Live Blend分别表示当前active的virtu…

人工智能算法工程师(中级)课程6-sklearn机器学习之聚类问题与代码详解

大家好,我是微学AI,今天给大家介绍一下人工智能算法工程师(中级)课程6-sklearn机器学习之聚类问题与代码详解。在机器学习领域,聚类是一种无监督学习方法,旨在将相似的数据点划分为同一类别。sklearn是一个广泛应用于机器学习的Py…

第十八章 Express multer 文件上传

本章将学习Express multer 文件上传 ,因为Nest 的文件上传是基于 Express 的中间件 multer 实现的,所以在学习 Nest 文件上传之前,我们先学习下 multer 包 首先先创建 multer-test 文件夹执行下面代码 创建package.json npm init -y接着安装…

@RequiredArgsConstructor实现构造器注入

RequiredArgsConstructor实现构造器注入 1. Autowired 和 Resource 注解 Autowired Autowired 是 Spring 框架提供的注解,用于自动装配依赖。可以用于字段、构造函数和 setter 方法。 Autowired private ISysUserService userService;Resource Resource 是 Jav…

Java 中的 switch 语句:类型支持与限制

Java 中的 switch 语句:类型支持与限制 1、switch 语句支持的数据类型2、switch 语句不支持的数据类型3、总结 💖The Begin💖点点关注,收藏不迷路💖 在 Java 中,switch 语句是一种用于多分支选择的控制结构…

物联网专业现代学徒制人才培养质量评价体系构建

一、 引 言 随着信息技术的飞速发展,物联网(IoT)技术已成为推动全球信息化、智能化发展的关键力量。物联网专业人才的培养质量直接关系到行业的创新能力和竞争力。现代学徒制作为一种创新的人才培养模式,已被广泛应用于职业教育中…

HCIP.ppp协议(点到点)认证阶段

ppp协议 ppp是点到点的协议 1.兼容性很好 2.可以进行认证和授权 3.可移植性强 三个阶段 1.链路协商阶段 LCP协商------去协商ppp链路会话 2.认证(可选) 3.NCP协商------网络层协商阶段(根据网络层的不同NCP协议就会存在一个对应的NC…

查看尝试登服务器ssh 访问ip地址

不指定时间查看尝试登录服务器的SSH访问IP地址 # CentOS/RHEL系统 zgrep "sshd" /var/log/secure-* | grep "Failed password" | awk {print $(NF-3)} | sort | uniq -c | sort -nr | head -n 10检查过去7天的日志尝试登录服务器的SSH访问IP地址 # CentOS…

QT--SQLite

配置类相关的表,所以我使用sqlite,且QT自带该组件; 1.安装 sqlite-tools-win-x64-3460000、SQLiteExpert5.4.31.575 使用SQLiteExpert建好数据库.db文件,和对应的表后把db文件放在指定目录 ./db/program.db; 2.选择sql组件 3.新…

GaussDB关键技术原理:高性能(五)

GaussDB关键技术原理:高性能(四)从USTORE存储引擎、计划缓存计划技术、数据分区与分区剪枝、列式存储和向量化引擎、SMP并行执行等五方面对高性能关键技术进行解读,本篇将从LLVM动态查询编译执行、SQL-BYPASS执行优化、线程池化、…

【文档+源码+调试讲解】冷冻仓储管理系统

摘 要 随着互联网时代的到来,同时计算机网络技术高速发展,网络管理运用也变得越来越广泛。因此,建立一个B/S结构的冷冻仓储管理系统,会使冷冻仓储管理系统工作系统化、规范化,也会提高冷冻仓储管理系统平台形象&#x…

若依搭建 帝可得 售货机 笔记

一、搭建项目 1.后端gitee链接: 启动项目时记得修改mysql和redis的相关信息;创建项目相关数据库,并导入初始化的SQL脚本 dkd-parent: 帝可得后台管理系统 (gitee.com) 2.前端gitee链接: 启动项目时记得安装依赖:np…

IPv4与IPv6的定义和主要区别

IPv4与IPv6的定义 IPv4,即互联网协议版本4(InternetProtocolversion4),是互联网使用最为广泛的协议之一。它采用32位地址,以点分十进制表示,如192.168.1.1。 IPv6,即互联网协议版本6&#xff…

自动驾驶革命:商汤科技突破性大模型UniAD震撼登场

自动驾驶革命:商汤科技突破性大模型UniAD震撼登场! 在人工智能的浪潮中,自动驾驶技术一直是科技巨头们竞相追逐的圣杯。而今,商汤科技联合上海人工智能实验室与武汉大学,以一篇名为"Planning-oriented Autonomou…

Shader每日一练(2)护盾

Shader "Custom/Shield" {Properties{_Size("Size", Range(0 , 10)) 1 // 控制噪声纹理缩放大小的参数_colorPow("colorPow", Float) 1 // 控制颜色强度的指数_colorMul("colorMul", Float) 1 // 控制颜色乘法因子_mainColor("…

政安晨:【Keras机器学习示例演绎】(五十四)—— 使用神经决策森林进行分类

目录 导言 数据集 设置 准备数据 定义数据集元数据 为训练和验证创建 tf_data.Dataset 对象 创建模型输入 输入特征编码 深度神经决策树 深度神经决策森林 实验 1:训练决策树模型 实验 2:训练森林模型 政安晨的个人主页:政安晨 欢…

【机器学习】独立成分分析(ICA):解锁信号的隐秘面纱

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 独立成分分析(ICA):解锁信号的隐秘面纱引言I…

人工智能算法工程师(中级)课程3-sklearn机器学习之数据处理与代码详解

大家好,我是微学AI,今天给大家分享一下人工智能算法工程师(中级)课程3-sklearn机器学习之数据处理与代码详解。 Sklearn(Scikit-learn)是一个基于Python的开源机器学习库,它提供了简单有效的数据挖掘和数据分析工具。Sklearn包含了…

webstorm问题解决:无法识别 @

问题解决tsconfig.json 问题 本地的 vite.config.ts 已经配置 路径 但是,我用webstorm 上识别不了 解决 新增文件tsconfig.json,添加 baseUrl 和 paths 的配置,以告诉 TypeScript 和 WebStorm 如何解析路径别名 tsconfig.json {&quo…