当前位置: 首页 > news >正文

进阶篇 第 6 篇:时间序列遇见机器学习与深度学习

进阶篇 第 6 篇:时间序列遇见机器学习与深度学习

AI Brain or Network Connections
(图片来源: Tara Winstead on Pexels)

在上一篇中,我们探讨了如何通过精心的特征工程,将时间序列预测问题转化为机器学习可以处理的监督学习任务。我们学习了如何创建滞后特征、滚动统计特征和日期时间特征,为利用强大的机器学习算法奠定了基础。

现在,是时候将这些特征付诸实践了!本篇我们将深入探讨两个关键领域:

  1. 机器学习模型的应用与验证: 如何选择合适的机器学习模型(特别是基于树的模型),以及如何在时间序列场景下进行可靠的模型评估,避免常见陷阱。
  2. 深度学习入门: 初步了解循环神经网络 (RNN),特别是 LSTM 和 GRU,为何它们特别适合处理序列数据,以及如何开始使用它们进行时间序列预测。

我们将看到,机器学习和深度学习为时间序列分析带来了新的视角和强大的能力。

Part 1: 机器学习模型在时间序列上的实战与可靠验证

当我们完成了上一篇介绍的特征工程后,我们就拥有了一个类似于传统监督学习的表格数据集:每一行代表一个时间点 t,包含多个特征 X(t)(滞后项、滚动统计、日期特征等)和一个目标值 y(t)

模型选择:超越线性

虽然线性模型(如岭回归、Lasso)可以作为简单的基线,但时间序列数据中的关系往往是非线性的,并且特征之间可能存在复杂的交互。因此,基于树的模型 (Tree-based Models) 在实践中通常表现更佳:

  • 随机森林 (Random Forest): 通过构建多个决策树并取平均结果,降低过拟合风险,对噪声相对鲁棒。
  • 梯度提升机 (Gradient Boosting Machines - GBM):
    • XGBoost, LightGBM, CatBoost: 这些是 GBM 的高效、优化实现,通常性能优越。它们能够处理大规模数据,内置正则化,并且通常能更好地捕捉复杂模式。
    • 优点: 通常无需对特征进行严格的缩放,能自动学习特征交互。

选择哪个模型取决于具体问题、数据量和计算资源,但 LightGBMXGBoost 通常是性能和效率上的优秀起点。

关键挑战:时间序列交叉验证

这是将机器学习应用于时间序列时最容易出错最关键的一环!

为什么标准的 K-Fold 交叉验证会失效?

标准的 K-Fold CV 会随机打乱数据并划分成 K 个折叠。在时间序列中这样做是灾难性的,因为它:

  1. 破坏了时间顺序: 模型可能在训练时“看到”它本不应知道的未来数据点。
  2. 导致数据泄漏 (Data Leakage): 验证集中的数据点可能与其训练集中的“未来”数据点相关联(例如,通过滚动特征计算),导致评估结果过于乐观,无法反映模型在真实预测场景下的表现。

正确的做法:保持时间顺序!

我们需要使用尊重时间顺序的交叉验证策略:

  1. 前向滚动划分 (Walk-Forward Validation / Rolling Forecast Origin):

    • 逻辑: 模拟真实的预测过程。
      • 用初始窗口的数据训练模型 (e.g., 前 100 个点)。
      • 预测下一个点 (第 101 个点)。
      • 将真实值 (第 101 个点) 加入训练集。
      • 用更新后的训练集 (前 101 个点) 重新训练(或更新)模型。
      • 预测下一个点 (第 102 个点)。
      • …依此类推,直到遍历完测试数据。
    • 优点: 最贴近真实预测场景。
    • 缺点: 计算成本高,因为模型需要多次训练。可以采用固定训练窗口大小(滑动窗口)或扩展训练窗口大小(每次增加数据)两种变体。
  2. 时间序列 K 折交叉验证 (TimeSeriesSplit in Scikit-learn):

    • 逻辑: sklearn.model_selection.TimeSeriesSplit 提供了一种简化的前向划分。它将数据分成 K 个折叠,但确保每个折叠的训练集总是早于其对应的验证集
      • Fold 1: train=[0], test=[1]
      • Fold 2: train=[0, 1], test=[2]
      • Fold 3: train=[0, 1, 2], test=[3]
      • Fold k: train=[0, …, k-1], test=[k] (这是最简单的形式,实际 TimeSeriesSplit 可以控制训练集和测试集大小)
    • 优点: 实现简单,计算效率比完整的 Walk-Forward 更高。
    • 缺点: 验证集之间可能不独立(它们共享部分历史数据)。
from sklearn.model_selection import TimeSeriesSplit
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error
import numpy as np
# 假设 X 是特征 DataFrame, y 是目标 Series (索引已排序)
# X, y = df.drop('y', axis=1), df['y'] # 来自上一篇特征工程后的数据# 示例: 使用 TimeSeriesSplit
n_splits = 5 # 例如,分成 5 折
tscv = TimeSeriesSplit(n_splits=n_splits)rmse_scores = []print(f"--- Running Time Series Cross-Validation (n_splits={n_splits}) ---")
fold = 0
for train_index, val_index in tscv.split(X):fold += 1X_train, X_val = X.iloc[train_index], X.iloc[val_index]y_train, y_val = y.iloc[train_index], y.iloc[val_index]print(f"Fold {fold}:")print(f"  Train indices: {train_index.min()} - {train_index.max()} (size: {len(train_index)})")print(f"  Validation indices: {val_index.min()} - {val_index.max()} (size: {len(val_index)})")# 选择并训练模型 (以 RandomForest 为例)model = RandomForestRegressor(n_estimators=100, random_state=42, n_jobs=-1)model.fit(X_train, y_train)# 预测并评估y_pred = model.predict(X_val)rmse = np.sqrt(mean_squared_error(y_val, y_pred))rmse_scores.append(rmse)print(f"  Validation RMSE: {rmse:.4f}")print("-" * 20)print(f"\nAverage RMSE across all folds: {np.mean(rmse_scores):.4f}")

实践流程总结:

  1. 特征工程 (如上一篇所述)。
  2. 选择时间序列交叉验证策略 (TimeSeriesSplit 或 Walk-Forward)。
  3. 选择机器学习模型 (如 LightGBM, XGBoost)。
  4. 在每个 CV 折叠中训练和评估模型
  5. (可选) 超参数调优: 使用 RandomizedSearchCVGridSearchCV,但需要将 cv 参数设置为 TimeSeriesSplit 对象。
  6. 最终模型训练: 使用所有历史数据重新训练最佳模型(或最佳参数组合)。
  7. 生成未来预测: 需要预测未来时间点的特征(这可能需要对滞后项和滚动项进行特殊处理或假设)。

Part 2: 初探深度学习在时间序列的应用

虽然基于特征工程的机器学习方法非常强大,但特征工程本身可能非常耗时且需要领域知识。深度学习 (Deep Learning),特别是循环神经网络 (Recurrent Neural Networks, RNNs),提供了一种不同的思路:让模型自动从原始序列数据中学习相关的模式和特征

为何选择 RNN (LSTM/GRU)?

  • 处理序列信息: RNN 被设计用来处理序列数据(如文本、语音、时间序列)。它们内部具有“记忆”机制,可以捕捉时间上的依赖关系。
  • 克服梯度问题 (LSTM/GRU): 基础的 RNN 存在梯度消失/爆炸问题,难以学习长期依赖。长短期记忆网络 (Long Short-Term Memory, LSTM)门控循环单元 (Gated Recurrent Unit, GRU) 通过引入“门控机制”,能够选择性地记忆或遗忘信息,从而更有效地捕捉长期模式。

核心思想:从序列到序列 (或序列到值)

与机器学习方法为每个时间点创建一行特征不同,DL 方法通常将时间序列视为一个序列

  • 数据准备是关键: 我们需要将原始时间序列转换成适合 RNN 输入的格式。常见做法是创建滑动窗口样本
    • 使用过去 n 个时间步的数据(序列 X_window = [y(t-n), ..., y(t-1)])作为输入。
    • 预测未来 h 个时间步的数据(序列 y_target = [y(t), ..., y(t+h-1)])作为输出(Sequence-to-Sequence),或者只预测下一个点 y(t)(Sequence-to-Vector)。
# 概念性数据准备示例
def create_sequences(data, seq_length, forecast_horizon=1):xs, ys = [], []for i in range(len(data) - seq_length - forecast_horizon + 1):x = data[i:(i + seq_length)]y = data[(i + seq_length):(i + seq_length + forecast_horizon)]xs.append(x)ys.append(y)return np.array(xs), np.array(ys)# 假设 'scaled_data' 是归一化后的时间序列 numpy 数组
sequence_length = 60 # 例如,用过去 60 个点
horizon = 1        # 预测未来 1 个点
X_dl, y_dl = create_sequences(scaled_data, sequence_length, horizon)# X_dl 的形状会是 (n_samples, sequence_length, n_features)
# y_dl 的形状会是 (n_samples, forecast_horizon) 或 (n_samples,) 如果 horizon=1
# 注意:通常需要先对数据进行归一化 (e.g., MinMaxScaler)

基本模型结构 (概念性 Keras 示例)

# from tensorflow import keras
# from keras.models import Sequential
# from keras.layers import LSTM, Dense, Dropout# model = Sequential()
# model.add(LSTM(units=50, # LSTM 单元数量
#                return_sequences=True, # 如果后面还有 LSTM 层,则为 True
#                input_shape=(sequence_length, n_features))) # 输入形状
# model.add(Dropout(0.2)) # 防止过拟合# model.add(LSTM(units=50, return_sequences=False)) # 最后一层 LSTM 通常 False
# model.add(Dropout(0.2))# model.add(Dense(units=forecast_horizon)) # 输出层,单元数等于预测步长# model.compile(optimizer='adam', loss='mean_squared_error')# print(model.summary())# 训练模型 (需要划分训练/验证集)
# history = model.fit(X_train_dl, y_train_dl,
#                     epochs=50,
#                     batch_size=32,
#                     validation_data=(X_val_dl, y_val_dl),
#                     verbose=1)

深度学习的优势与挑战

优势:

  • 自动特征学习: 可能减少手动特征工程的需求。
  • 捕捉复杂非线性与长依赖: LSTM/GRU 在这方面通常优于传统模型。
  • 端到端学习: 可以直接从原始(或少量预处理)数据学习到预测。

挑战:

  • 数据需求大: 通常需要比传统模型更多的数据才能表现良好。
  • 计算成本高: 训练时间长,需要较好的硬件(GPU)。
  • 模型复杂性与调参: 网络结构、层数、单元数、优化器、学习率等超参数选择复杂。
  • 可解释性较差: 理解模型为何做出特定预测更困难(“黑盒”问题)。
  • 对数据预处理敏感: 归一化等步骤非常重要。

总结:选择你的武器

本篇我们跨越了从应用机器学习模型到初探深度学习的广阔领域:

  • 强调了在使用机器学习模型(如 Random Forest, XGBoost)时,进行可靠的时间序列交叉验证(如 TimeSeriesSplit, Walk-Forward)的极端重要性。
  • 介绍了深度学习(特别是 LSTM/GRU)作为一种自动从序列中学习特征和模式的强大替代方案,并了解了其基本原理、数据准备方式和优缺点。

现在,你的时间序列工具箱更加丰富了。你是选择精雕细琢特征工程驱动的机器学习,还是拥抱端到端的深度学习,亦或是根据问题特点将它们结合?这取决于你的数据、目标、资源和对模型复杂性的偏好。

下一篇预告 (系列终章):
我们已经探索了从经典统计模型到现代机器学习和深度学习的各种方法。在最后一篇中,我们将尝试融会贯通,讨论如何根据问题特点选择合适的模型策略,了解组合预测的思想,并展望时间序列分析领域未来的发展方向和持续学习的资源

准备好整合你的知识,为你的时间序列探索之旅画上句号(也是新的开始)了吗?敬请期待!


(你觉得在你的项目中,是基于特征工程的机器学习更容易上手,还是直接尝试深度学习更有吸引力?在使用 TimeSeriesSplit 时遇到了哪些挑战?欢迎分享你的经验!)

相关文章:

进阶篇 第 6 篇:时间序列遇见机器学习与深度学习

进阶篇 第 6 篇:时间序列遇见机器学习与深度学习 (图片来源: Tara Winstead on Pexels) 在上一篇中,我们探讨了如何通过精心的特征工程,将时间序列预测问题转化为机器学习可以处理的监督学习任务。我们学习了如何创建滞后特征、滚动统计特征…...

RHCE 作业二(密钥登录实验)

1.进入ssh主配置文件恢复配置: 2.vim进入ssh子文件夹查看配置 3.重启服务 /etc/ssh/ key结尾或者.pub结尾的文件全部都是密钥 sshd_confg.d目录是服务的子配置文件 ssh_confg.d目录是客户端你的子配置文件 ~/.ssh/ 是当前用户的配置文件 4.服务器和客户端分别…...

android contentProvider 踩坑日记

写此笔记原因 学习《第一行代码》到第8章节实现provider时踩了一些坑,因此记录下来给后来人和自己一个提示,仅此而已。 包含内容 Sqlite数据库CURD内容provider界面provider项目中书籍管理provider实现逻辑用adb shell确认providercontentResolver接收…...

K8s:概念、特点、核心组件与简单应用

一、引言 在当今云计算和容器技术蓬勃发展的时代,Kubernetes(简称 K8s)已成为容器编排领域的事实标准。它为管理容器化应用提供了高效、可靠的解决方案,极大地简化了应用的部署、扩展和运维过程。无论是小型初创公司还是大型企业…...

基于表面肌电信号sEMG的手势识别——以Ninapro DB1数据集使用CNN网络识别为例

完整代码获取 评论区或者私信留邮箱 接论文辅导!中文核心辅导!SCI三四区辅导! 可接模型改进 任务描述 表面肌电信号( sEMG ) 是一种生物电信号,存在于肌肉神经。 当大脑下达肌肉动作指令,肌肉会产生控制信号&#xff…...

黑盒测试——等价类划分法实验

任务&#xff1a; 设某程序有两个输入&#xff1a;整数x1和整数x2&#xff0c;计算Yf(x1,x2)。x1和x2的取值范围为1< x1<500,1< x2<500。当x1在[1,200) 取值且x2在[1,300] 取值时&#xff0c;Yf(x1,x2) x1x2&#xff1b;当x1在[200,500] 取值且x2在[1,300] 取值时&…...

深度学习4月22笔记

1、过拟合与欠拟合 在训练深层神经网络时&#xff0c;由于模型参数较多&#xff0c;在数据量不足时很容易过拟合。而正则化技术主要就是用于防止过拟合&#xff0c;提升模型的泛化能力(对新数据表现良好)和鲁棒性&#xff08;对异常数据表现良好&#xff09;。 1. 概念认知 …...

【MySQL数据库入门到精通-03 数据类型及案列】

文章目录 一、三类数据类型二、数值类型三、字符串类型四、日期时间类型五、日期时间类型 一、三类数据类型 MySQL中的数据类型有很多&#xff0c;主要分为三类&#xff1a;数值类型、字符串类型、日期时间类型。 二、数值类型 比如&#xff1a; 1). 年龄字段 – 不会出现负数…...

【机器学习】决策树算法中的 “黄金指标”:基尼系数深度剖析

一、基尼系数的基本概念 基尼系数&#xff08;Gini Impurity&#xff09;在决策树分类算法中&#xff0c;是用于衡量数据纯度的重要指标&#xff0c;与信息熵有着相似的功能。在样本集合里&#xff0c;基尼系数代表随机选取一个样本时&#xff0c;该样本被分错的概率 。假设一…...

植被参数遥感反演技术革命!AI+Python支持向量机/随机森林/神经网络/CNN/LSTM/迁移学习在植被参数反演中的实战应用与优化

在全球气候变化与生态环境监测的重要需求下&#xff0c;植被参数遥感反演作为定量评估植被生理状态、结构特征及生态功能的核心技术&#xff0c;正面临诸多挑战。随着遥感技术的发展&#xff0c;数据复杂度不断提升&#xff0c;模型精度的要求也越来越高。同时&#xff0c;多源…...

【AI】SpringAI 第四弹:接入本地大模型 Ollama

Ollama 是一个开源的大型语言模型服务工具。它的主要作用是帮助用户快速在本地运行大模型&#xff0c; 简化了在 Docker 容器内部署和管理大语言模型&#xff08;LLM&#xff09;的过程。 1. 确保Ollama 已经启动 # 查看帮助文档 ollama -h# 自动下载并启动 ollama run deeps…...

C# MP3 伴奏

使用建议&#xff1a; 参数调节指南&#xff1a; 低频人声残留&#xff1a;降低CenterFrequency(800-1500Hz) 高频人声残留&#xff1a;提高CenterFrequency(2500-3500Hz) 消除力度不足&#xff1a;提高EliminationStrength(0.9-1.0) 伴奏失真&#xff1a;降低EliminationSt…...

【springsecurity oauth2授权中心】将硬编码的参数提出来放到 application.yml 里 P3

在application.yml里添加配置 application.yml oauth2:client:id: clientsecret: secretauthentication-method: client_secret_basicgrant-types: authorization_code,refresh_tokenredirect-uris:- http://localhost:8081/login/oauth2/code/client- http://localhost:8081…...

【Ansible】批量管理 Windows自动化运维

一&#xff0c;前期准备 1&#xff0c;控制端&#xff08;Linux&#xff09;的要求 Ansible可以在安装了Python 2&#xff08;2.7版&#xff09;或Python 3&#xff08;3.5及更高版本&#xff09;的任何机器上运行。控制端计算机不支持Windows。 2&#xff0c;客户端&#x…...

AES-128、AES-192、AES-256 简介

AES&#xff08;Advanced Encryption Standard&#xff09; 是一种广泛使用的对称加密算法&#xff0c;由美国国家标准与技术研究院&#xff08;NIST&#xff09;于2001年正式采纳&#xff0c;用于替代旧的 DES 和 3DES。AES 基于 Rijndael 算法&#xff0c;支持 128 位、192 位…...

osxcross 搭建 macOS 交叉编译环境

1. osxcross 搭建 macOS 交叉编译环境 1. osxcross 搭建 macOS 交叉编译环境 1.1. 安装依赖1.2. 安装 osxcross 及 macOS SDK 1.2.1. 可能错误 1.3. 编译 cmake 类工程1.4. 编译 configure 类工程1.5. 单文件编译及其他环境编译1.6. 打包成 docker 镜像1.7. 使用 docker 编译 …...

联通余额查询接口

接口名称 1) 请求地址 https://ucbss.10010.cn/npfweb/NpfWeb/Mustpayment/getMustpayment?number13112345586&province051&commonBean.phoneNo13112345586&channelType101https://ucbss.10010.cn/npfweb/NpfWeb/Mustpayment/getMustpayment?number13112345586&…...

Python 设计模式:桥接模式

1. 什么是桥接模式&#xff1f; 桥接模式是一种结构型设计模式&#xff0c;它通过将抽象部分与其实现部分分离&#xff0c;使得两者可以独立变化。桥接模式的核心思想是将抽象和实现解耦&#xff0c;从而提高系统的灵活性和可扩展性。 桥接模式的核心思想是将一个类的接口与其…...

7.6 GitHub Sentinel后端API实战:FastAPI高效集成与性能优化全解析

GitHub Sentinel Agent 用户界面设计与实现:后端 API 集成 关键词:前后端分离架构、RESTful API 设计、数据序列化、命令行工具开发、集成测试 后端 API 集成关键技术实现 本阶段需要完成前端界面与后端服务的无缝对接,实现以下核心功能: #mermaid-svg-FFnzT13beWV52dtx …...

Smart AI:在AI浪潮中崛起的智能NFT生态革命者

技术引领&#xff0c;智能进化&#xff1a;Smart AI强势登场 在全球AI技术浪潮席卷之际&#xff0c;由澳大利亚顶尖技术团队倾力打造的Smart AI平台横空出世&#xff0c;以其革命性的NFT智能进化系统&#xff0c;正在彻底重塑数字资产的未来图景。Smart AI不仅是一个平台&…...

Linux——基于socket编程实现简单的Tcp通信

前言1&#xff1a;想要实现一个简单的Tcp通信不难&#xff0c;对于初学者而言&#xff0c;难点在于使用了大量未曾接触过的函数调用&#xff0c;所以本篇重点在于详解每部分代码中相关函数的功能。 1. 简单认识一下TCP传输 TCP通信协议是面向字节流的、可靠的、有连接的传输&a…...

STL C++详解——priority_queue的使用和模拟实现 堆的使用

priority_queue的使用 std::priority_queue 是 C 标准模板库&#xff08;STL&#xff09;中的一个容器适配器&#xff0c;提供了优先队列的功能。 优先队列&#xff1a;是一种特殊的队列&#xff0c;队列中的每个元素都有与之关联的优先级&#xff0c;优先级高的元素会先出队…...

是否可以使用非被动 S4P 文件进行反嵌?

AEDT 电路去嵌入算法使用假定线性时不变 &#xff08;LTI&#xff09; 行为的转换。如果非被动 S 参数块不是 LTI&#xff0c;则倒数函数将无法按预期工作。...

GAEA的技术优势:分层加密与去中心化数据治理

GAEA采用分层加密架构&#xff0c;将用户数据分为三个层级&#xff1a; 基础层&#xff08;链上数据&#xff09;&#xff1a;用户身份哈希、资源贡献记录等核心数据通过零知识证明&#xff08;ZK-SNARKs&#xff09;进行链上加密&#xff0c;确保不可篡改和匿名性。 情感层…...

使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第九讲)

这一期讲解GUI_guider中的容器控件的使用以及相关函数&#xff0c;容器本质上是具有布局和自动调整大小功能的基本对象 &#xff0c;通常用来装载其他子控件。 打开上一期的项目&#xff0c;在工具栏中选中容器控件拖拽到界面中&#xff0c;具体如图所示&#xff1a; 容器默认…...

SparkStreaming概述

SparkStreaming主要用于流式计算&#xff0c;处理实时数据。 DStream是SparkStreaming中的数据抽象模型&#xff0c;表示随着时间推移收到的数据序列。 SparkStreaming支持多种数据输入源&#xff08;如Kafka、Flume、Twitter、TCP套接字等&#xff09;和数据输出位置&#xf…...

LeetCode---整数反转

整数反转 给你一个 32 位的有符号整数 x &#xff0c;返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] &#xff0c;就返回 0。 示例 示例 1&#xff1a; 输入&#xff1a;x 123 输出&#xff1a;321 示例 2&#xf…...

Conceptrol: Concept Control of Zero-shot Personalized Image Generation(个性化图像生成)

文章目录 一、论文介绍二、项目部署三、效果展示3.1ipadapter plus sd1.5的效果3.2ipadapter plus sd1.5 plus concept的效果3.3两者结果的比较&#xff1a;原本的ipadapter、加了concept的ipadapter 一、论文介绍 个性化图像生成中的平衡问题&#xff1a;现有的zero-shot adap…...

【Harmony】常用工具类封装

文章目录 一&#xff0c;简介二&#xff0c;网络请求工具类2.1、鸿蒙原生http封装2.2、第三方axios封装(需提前下载依赖) 三、录音笔相关工具类3.1、录音封装(录入)3.2、录音封装(放音/渲染)3.3、文件写入封装(针对录音/放音功能) 四、RDB关系型数据库4.1、relationalStore简答…...

大模型部署到本地就是私有化部署吗?

大模型私有化的定义需要从部署方式和数据/模型控制权两个维度来理解&#xff0c;不能简单地仅以“部署位置”或“数据训练”单一条件判断。以下是具体分析&#xff1a; 1. 大模型私有化的核心定义 根据知识库中的描述&#xff08;[1][2][3][8]&#xff09;&#xff1a; 私有化…...

C语言高频面试题——嵌入式系统中中断服务程序

在嵌入式系统中&#xff0c;中断服务程序&#xff08;ISR&#xff09;的设计需遵循严格的规则以确保系统稳定性和实时性。以下是对这段代码的分析及改进建议&#xff1a; 代码分析 __interrupt double compute_area (double radius) { double area PI * radius * radius; pri…...

JavaFX 实战:从零打造一个功能丰富的英文“刽子手”(Hangman)游戏

大家好&#xff01;今天我们要挑战一个经典的单词猜谜游戏——“刽子手”&#xff08;Hangman&#xff09;&#xff0c;并使用 JavaFX 这个强大的 GUI 工具包来赋予它现代化的交互体验。这个项目不仅有趣&#xff0c;而且是学习和实践 JavaFX 核心概念的绝佳途径&#xff0c;涵…...

第 2.1 节: 机器人仿真环境选择与配置 (Gazebo, MuJoCo, PyBullet)

在真实机器人硬件上进行开发和测试既耗时又存在风险&#xff08;硬件损坏、安全问题&#xff09;。机器人仿真环境提供了一个虚拟的沙盒&#xff0c;让开发者能够在计算机中模拟机器人的物理行为、传感器读数和环境互动&#xff0c;极大地加速了开发、测试和调试过程。特别是对…...

网络开发基础(游戏)之 粘包分包

粘&#xff08;nin&#xff09;包、分包 在网络通信中&#xff0c;TCP协议是面向流的协议&#xff0c;没有消息边界概念&#xff0c;粘包和分包是常见的问题。在某种情况下&#xff08;例如网络环境不稳定&#xff09;就会导致"粘包"和"分包"问题&#xf…...

联邦元学习实现个性化物联网的框架

随着数据安全和隐私保护相关法律法规的出台&#xff0c;需要直接在中央服务器上收集和处理数据的集中式解决方案&#xff0c;对于个性化物联网而言&#xff0c;训练各种特定领域场景的人工智能模型已变得不切实际。基于此&#xff0c;中山大学&#xff0c;南洋理工大学&#xf…...

使用 Nacos 的注意事项与最佳实践

&#x1f4f9; 背景 Nacos 凭借其强大&#x1f4aa;的服务发现、配置管理和服务管理能力&#xff0c;成为构建分布式系统的得力助手。然而&#xff0c;要充分发挥 Nacos 的优势&#xff0c;实现系统的高性能、高可用&#xff0c;掌握其使用过程中的注意事项和最佳实践至关…...

在Pytorch中使用Tensorboard可视化训练过程

【在Pytorch中使用Tensorboard可视化训练过程】 https://www.bilibili.com/video/BV1Qf4y1C7kz/?share_sourcecopy_web&vd_sourcef00bfb41b3b450c3767070ed82f30ac8 主要功能&#xff1a; 1.保存网络结构图 2.保存训练集的损失Loss&#xff0c;验证集的正确性Accuracy以…...

15.电感特性在EMC设计中的运用

电感特性在EMC设计中的运用 1. 共模电感与差模电感的差异2. 电感的高频等效特性![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b4dc000672af4dd69a528450eb42cf10.png)3. 电感在EMC设计中的使用注意事项3.1 LC滤波计算3.2 并联型多级浪涌防护的电感退耦 1. 共模电感…...

代理设计模式:从底层原理到源代码 详解

代理设计模式&#xff08;Proxy Pattern&#xff09;是一种结构型设计模式&#xff0c;它通过创建一个代理对象来控制对目标对象的访问。代理对象充当客户端和目标对象之间的中介&#xff0c;允许在不修改目标对象的情况下添加额外的功能&#xff08;如权限控制、日志记录、延迟…...

25、简述.NET程序集(Assembly)

.NET 程序集&#xff08;Assembly&#xff09; .NET 程序集&#xff08;Assembly&#xff09; 是 .NET 应用程序的基本部署单元&#xff0c;包含以下核心内容&#xff1a; 类型与代码&#xff1a; 存储类、接口等类型的定义及实现&#xff08;以中间语言 IL 形式&#xff09;。…...

JavaScript 笔记 --- part 5 --- Web API (part 3)

(webAPI part3) BOM 操作 JS 执行机制 javascript 是单线程的, 也就是说, 只能同时执行一个任务。 为了解决这个问题, 利用多核 CPU 的计算能力, HTML5 提出 Web Worker API, 允许 JavaScript 脚本创建多个线程, 并将任务分配给这些线程。 于是, JS 出现了同步和异步的概念。…...

HCIP(OSPF)(3)

OSPF 报文结构 公共头部&#xff1a;包含版本&#xff08;8bit&#xff09;、类型&#xff08;8bit&#xff09;、报文长度&#xff08;16bit&#xff09;、路由器 ID&#xff08;32bit&#xff09;、区域 ID&#xff08;32bit&#xff09;、校验和&#xff08;16bit&#xff0…...

Docker:重塑应用开发与部署的未来[特殊字符]

Docker&#xff1a;重塑应用开发与部署的未来&#x1f680; 在数字化转型的浪潮中&#x1f30a;&#xff0c;应用开发与部署面临着诸多挑战&#xff0c;如环境一致性差、资源利用率低、运维复杂等。而Docker&#xff0c;作为容器技术领域的明星产品&#x1f31f;&#xff0c;凭…...

逻辑回归:损失和正则化技术的深入研究

逻辑回归&#xff1a;损失和正则化技术的深入研究 引言 逻辑回归是一种广泛应用于分类问题的统计模型&#xff0c;尤其在机器学习领域中占据着重要的地位。尽管其名称中包含"回归"&#xff0c;但逻辑回归本质上是一种分类算法。它的核心思想是在线性回归的基础上添…...

如何改电脑网络ip地址完整教程

更改电脑的网络IP地址以满足特定的网络需求&#xff0c;本文将为您提供一份详细的步骤指南。其实&#xff0c;改变IP地址并不是一件复杂的事&#xff0c;能解决因为IP限制带来的麻烦。以下是操作指南&#xff1a; 方法一&#xff1a;Windows 系统&#xff0c;通过图形界面修改 …...

Scenario Dreamer:用于生成驾驶模拟环境的矢量化潜扩散模型

25年3月来自加拿大 Mila AI研究院、蒙特利尔大学、蒙特利尔理工、普林斯顿、加拿大 CIFAR AI Chair 计划和 Torc 机器人公司的论文“Scenario Dreamer: Vectorized Latent Diffusion for Generating Driving Simulation Environments”。 Scenario Dreamer&#xff0c;是一个完…...

# 基于PyTorch的食品图像分类系统:从训练到部署全流程指南

基于PyTorch的食品图像分类系统&#xff1a;从训练到部署全流程指南 本文将详细介绍如何使用PyTorch框架构建一个完整的食品图像分类系统&#xff0c;涵盖数据预处理、模型构建、训练优化以及模型保存与加载的全过程。 1. 系统概述 本系统实现了一个基于卷积神经网络(CNN)的…...

【MCP Node.js SDK 全栈进阶指南】初级篇(1):MCP开发环境搭建详解

引言 Model Context Protocol (MCP) 是一种开放标准,旨在规范模型与应用程序之间的交互方式。本文作为MCP TypeScript-SDK系列的第一篇,将详细介绍如何搭建MCP开发环境,包括Node.js与TypeScript环境配置、SDK安装、开发工具推荐以及项目结构设计,帮助你快速入门MCP应用开发…...

unity脚本-FBX自动化模型面数校验

根据目前模型资源平均面数预算进行脚本制作&#xff0c;自动化校验模型面数是否符合规范。 *注&#xff1a;文件格式为.cs。需要放置在unity资源文件夹Assets>Editor下。 测试效果&#xff08;拖一个fbx文件进unity时自动检测&#xff09;&#xff1a; 以下为完整代码 us…...

压力容器的优化设计

1 优化设计概述 优化设计是一种寻找确定最优设计方案的技术。所谓“最优设计”&#xff0c;指的是一种方案可以满足所有的设计要求&#xff0c;而且所需的支出&#xff08;如重量&#xff0c;面积&#xff0c;体积&#xff0c;应力&#xff0c;费用等&#xff09;最小。也就是…...