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

基于机器学习时序库pmdarima实现时序预测

目录

  • 一、Pmdarima实现单变量序列预测
    • 1.1 核心功能与特性
    • 1.2 技术优势对比
    • 1.3 python案例
      • 1.3.1 时间序列交叉验证
        • 1.3.1.1 滚动交叉验证
        • 1.3.1.2 滑窗交叉验证

时间序列相关参考文章
时间序列预测算法—ARIMA
基于VARMAX模型的多变量时序数据预测
基于机器学习时序库pmdarima实现时序预测
时间序列预测算法—Prophet
时间序列预测算法—LSTM
长时间序列预测算法—Informer
时间序列分类任务—tsfresh
有季节效应的非平稳序列分析
python时间序列处理
时间序列异常值检测方法
时间序列异常值处理方法

一、Pmdarima实现单变量序列预测

  pmdarima 是 Python 生态中专注于时间序列预测的高阶工具库,基于 ARIMA/SARIMA 模型框架,能够处理平稳性、季节性、周期性等问题,可以执行差分、交叉验证等运算,通过自动化建模流程降低时序分析门槛。其核心设计理念为 “自动化” 与 “兼容性”,旨在为开发者提供简洁、工业级的时序预测解决方案。
官方文档
源码仓库

1.1 核心功能与特性

  1. 自动化建模引擎
    参数自动搜索:通过 auto_arima() 函数一键完成模型参数(p, d, q 及季节性参数 P, D, Q, m)的智能搜索,无需手动调参。内置 ADF检验(Augmented Dickey-Fuller Test)自动确定差分阶数 d,解决非平稳序列问题。
    季节性处理:支持季节性差分与傅里叶项分解,自动检测季节性周期 m(如月、季度、年周期)。
  2. 工程化接口设计
    sklearn 兼容性:遵循 scikit-learn API 规范(fit()、predict()、score()),无缝接入机器学习流水线。支持 Pipeline 集成与 GridSearchCV 超参数优化。
    扩展功能:模型持久化(pickle 序列化)、置信区间计算、残差诊断(白噪声检验)。
  3. 性能优化
    并行计算:通过 n_jobs 参数启用多核并行加速模型搜索。
    大样本支持:分块(Chunking)处理超长时序数据,避免内存溢出。

1.2 技术优势对比

特性pmdarima传统 ARIMA 实现(如 statsmodels)
参数自动化✅ 全自动搜索 (p,d,q,P,D,Q,m)❌ 需手动指定所有参数
季节性支持✅ 内置季节差分与傅里叶分解⚠️ 需手动配置季节差分项
API 易用性✅ 类 sklearn 接口(fit/predict)⚠️ 需调用专用函数(如 ARIMA()
非平稳性处理✅ 自动执行ADF检验确定差分阶数d❌ 需手动运行平稳性检验
计算效率✅ 并行搜索 (n_jobs)、分块处理❌ 单线程计算为主
生产集成✅ 兼容sklearn流水线与超参数优化⚠️ 需额外封装才能接入ML系统
模型诊断✅ 内置残差检验与置信区间计算⚠️ 需调用其他工具辅助验证

1.3 python案例

  load_wineind 是pmdarima 库中经典的季节性时间序列数据集,时间范围为1980 年 1 月至 1994 年 8 月(共 176 个月度观测点),反映澳大利亚葡萄酒产业的月度销量。

import pmdarima as pm
from pmdarima import model_selection
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.metrics import mean_squared_error
import warnings
warnings.filterwarnings("ignore")data = pm.datasets.load_wineind()
fig = plt.figure(figsize=(16,5))
plt.plot(range(data.shape[0]),data)
plt.grid()

在这里插入图片描述

#使用pm分割数据,遵循时序规则,不会打乱时间顺序
train, test = model_selection.train_test_split(data, train_size=152)
#自动化建模,只支持SARIMAX混合模型,不支持VARMAX系列模型
arima = pm.auto_arima(train, trace=True, #训练数据,是否打印训练过程error_action='ignore', #设置为'ignore'将会忽略错误并继续,其他选项包括'warn'、'raise'、'trace'等。  suppress_warnings=True, #无视警告和错误maxiter=5, #允许的最大迭代次数seasonal=True,#是否考虑季节性因素。设置为True表示模型将包含季节性成分。m=12 #季节性的周期数)

在这里插入图片描述

#预测 - n_periods向未来预测,无法对训练的时间进行预测
preds = arima.predict(n_periods=test.shape[0])
preds #按照测试集的日期进行预测

在这里插入图片描述

fig = plt.figure(figsize=(16,5))
plt.plot(range(test.shape[0]),test)
plt.plot(range(test.shape[0]),preds)
plt.grid()

在这里插入图片描述

#评估指标 - 可共用sklearn的评估指标,也可调用特定的时序指标AIC
np.sqrt(mean_squared_error(test, preds))  #rmse  输出:2550.8824550311906
arima.aic() 							  #aic 输出:2946.1506587987415
arima.summary()

在这里插入图片描述
  傻瓜式搜索合适的参数,从效率角度来说远远超过statsmodel,遗憾的是,从上述代码不难看出,pmdarima的代码思路是更靠近机器学习而不是统计学的,因此pmd.auto_arima跑出的结果往往无法满足统计学上的各类检验要求,因此泛化能力无法被保证。同时我们也很容易发现,由于数据集分割的缘故,autoarima选择出的最佳模型可能无法被复现,例如我们使用autoarima选择出的最佳模型建立模型:

model = pm.ARIMA(order=(2,1,1),seasonal_order=(1,0,1,12), max_iter=500)
model.fit(train)
np.sqrt(mean_squared_error(test, model.predict(n_periods = test.shape[0]))) #RMSE:2983.19明显高于auto_arima:2550.88的结果
model.aic() #AIC:2936.459却低于auto_arima:2946.15的结果,所以AIC并不能作为唯一标准的评估指标fig = plt.figure(figsize=(16,5))
plt.plot(range(test.shape[0]),test)
plt.plot(range(test.shape[0]),model.predict(n_periods = test.shape[0]))
plt.grid()

在这里插入图片描述

1.3.1 时间序列交叉验证

  在时序模型的选择过程中,可以借助交叉验证来帮助我们选择更好的模型。时间序列的交叉验证非常特殊,因为时间序列数据必须遵守“过去预测未来”、“训练中时间顺序不能打乱”等基本原则,因此传统机器学习中的k折交叉验证肯定无法使用。在时间序列的世界中,有以下两种常见的交叉验证方式:滚动交叉验证滑窗交叉验证

1.3.1.1 滚动交叉验证

  滚动交叉验证是一种针对时间序列数据的验证方法,其核心思想是在模型训练过程中不断扩展训练集,同时使验证集逐步向未来推进。这种方式不仅确保了模型始终遵循“用过去预测未来”的原则,还能保证训练数据与预测目标之间的时间间隔足够接近,从而提高预测的现实性和有效性。
  相比传统的“多步预测”方法,滚动交叉验证避免了“误差累积”问题。由于训练过程中始终使用真实标签进行拟合,模型不会受到前期预测误差的传递影响,因此能够更稳定地评估未来数据的预测能力。对于时间序列任务,滚动交叉验证能够更真实地模拟未来预测场景,从而提高模型的泛化性能。
在这里插入图片描述
  在pmdarima中,使用类RollingForecastCVcross_validate来实现交叉验证。

model_selection.RollingForecastCV(h=1, step=1, initial=None)

h:验证集中的样本数量,可以输入[1, n_samples]的整数。

step:训练集中每次增加的样本数量,必须为大于等于1的正整数。

initial:第一次交叉验证时的训练集样本量,如果不填写则按1/3处理。

cv = model_selection.RollingForecastCV(h=1, step=1, initial = 10)
cv_generator = cv.split(data)
next(cv_generator) #根据Initial初始训练集有10个样本,验证集遵循参数h的设置,只包含一个样本

在这里插入图片描述

next(cv_generator) #根据step的设置,训练集每次增加1个样本,验证集继续包含一个样本

在这里插入图片描述

cv = model_selection.RollingForecastCV(h=5, step=10, initial = 10)
cv_generator = cv.split(data)
next(cv_generator) #验证集包含10个样本

在这里插入图片描述

next(cv_generator) 

在这里插入图片描述
  在pmdarima中实现滚动交叉验证时,验证集实际上是可以重复的,可以在有限的数据上进行多轮验证集重合的交叉验证。

model = pm.ARIMA(order=(2,1,1),seasonal_order=(1,0,1,12),max_iter=500)
cv = model_selection.RollingForecastCV(h=24, step=12, initial=36) 
predictions = model_selection.cross_validate(model, data,cv=cv, scoring = "mean_squared_error", verbose = 2, #控制日志输出的详细程度 0:无输出1:仅显示重要信息 2:详			       细日志,显示每次滚动交叉验证的进度和结果error_score = "raise") #控制当交叉验证过程中发生错误时的行为:"raise":遇到错误时直接报错np.nan:如果遇到错误,则该次评估返回 NaN,不会影响整个交叉验证流程
predictions

在这里插入图片描述

np.sqrt(predictions["test_score"]) #rmse

在这里插入图片描述
  交叉验证的测试集中得到的RMSE大部分都大于我们之前自动化建模时得到的RMSE,并且训练数据越少时,测试集上的RMSE会越大,这可能说明在前几折交叉验证时,训练集的数据量太少,我们可以考虑增大initial当中的设置来避免这个问题。

1.3.1.2 滑窗交叉验证

  与滚动交叉验证类似,滑窗交叉验证中的验证集既可以是单一样本,也可以包含多个时间步数据。相较于滚动交叉验证,滑窗交叉验证的核心优势在于训练集大小保持恒定, 每次训练时仅使用理论上对当前验证集最有效的信息。这避免了训练集无限增长所带来的计算开销,同时确保模型始终基于最新的历史数据进行训练,提高对近期趋势的适应性。然而,这一特性也带来了潜在问题:由于训练集较小,模型需要进行 更多次训练,导致计算量大幅增加,使得交叉验证过程异常缓慢。特别是在高频时间序列或大规模数据集上,滑窗交叉验证的计算成本可能成为实际应用中的限制因素。
在这里插入图片描述
  在pmdarima当中,使用SlidingWindowForecastCV来完成滑窗交叉验证:

model_selection.SlidingWindowForecastCV(h=1, step=1, window_size=None)
h:验证集中的样本数量,可以输入[1, n_samples]的整数。

step:每次向未来滑窗的样本数量,必须为大于等于1的正整数。

window_size:滑窗的尺寸大小,如果填写None则按照样本量整除5得到的数来决定。

cv = model_selection.SlidingWindowForecastCV(h=1, step=1, window_size = 10)
cv_generator = cv.split(data)
next(cv_generator)

在这里插入图片描述

next(cv_generator) 

在这里插入图片描述

cv = model_selection.SlidingWindowForecastCV(h=5, step=10, window_size = 10)
cv_generator = cv.split(data)
next(cv_generator)

在这里插入图片描述

next(cv_generator)

在这里插入图片描述

model = pm.ARIMA(order=(2,1,1),seasonal_order=(1,0,1,12),max_iter=500)
cv = model_selection.SlidingWindowForecastCV(h=24, step=12, window_size=36) #简单粗暴
predictions = model_selection.cross_validate(model,data, cv=cv, scoring = "mean_squared_error", verbose = 2, error_score = "raise")
predictions

在这里插入图片描述

np.sqrt(predictions["test_score"])

在这里插入图片描述
  从结果来看,使用更少的训练集进行训练后,模型输出的RMSE大幅上升了,并且也没有变得更稳定,这说明当前模型下更大的训练集会更有利于模型的训练。

cv = model_selection.SlidingWindowForecastCV(h=24, step=1, window_size=132)
predictions = model_selection.cross_validate(model, data,cv=cv, scoring = "mean_squared_error", verbose = 2, error_score = "raise")
np.sqrt(predictions["test_score"])                                            

在这里插入图片描述
  此时RMSE的均值大幅下降了,但是模型还是不稳定,这说明当前时间序列各时间段上的差异较大,当前模型的拟合结果一般。虽然通过增加训练集的数据量可以让模型表现提升,但极其不稳定的结果展示当前模型的泛化能力是缺失的。当然,和使用AIC时一样,我们只能选择表现更好的时序模型(只能择优),而无法选择完美的时序模型。当我们将auto_arima选出的最佳参数放弃、而选择带有其他参数的模型,说不定得到的结果会更加不稳定。

相关文章:

基于机器学习时序库pmdarima实现时序预测

目录 一、Pmdarima实现单变量序列预测1.1 核心功能与特性1.2 技术优势对比1.3 python案例1.3.1 时间序列交叉验证1.3.1.1 滚动交叉验证1.3.1.2 滑窗交叉验证 时间序列相关参考文章: 时间序列预测算法—ARIMA 基于VARMAX模型的多变量时序数据预测 基于机器学习时序库…...

计算机视觉的研究方向、发展历程、发展前景介绍

以下将分别从图像分类、目标检测、语义分割、图像分割(此处应主要指实例分割)四个方面,为你介绍研究生人工智能计算机视觉领域的应用方向、发展历程以及发展前景。 文章目录 1.图像分类应用方向发展历程发展前景 2.目标检测应用方向发展历程…...

NLP_[2]-认识文本预处理

文章目录 1 认识文本预处理1 文本预处理及其作用2. 文本预处理中包含的主要环节2.1 文本处理的基本方法2.2 文本张量表示方法2.3 文本语料的数据分析2.4 文本特征处理2.5数据增强方法2.6 重要说明 2 文本处理的基本方法1. 什么是分词2 什么是命名实体识别3 什么是词性标注 1 认…...

单硬盘槽笔记本更换硬盘

背景 本人的笔记本电脑只有一个硬盘槽,而且没有M.2的硬盘盒,只有一个移动硬盘 旧硬盘:512G 新硬盘:1T 移动硬盘:512G 参考链接:https://www.bilibili.com/video/BV1iP41187SW/?spm_id_from333.1007.t…...

在stm32mp257的yocto中设置用户名和密码

在STM32MP257的Yocto环境中设置用户名和密码,通常需要修改根文件系统的用户配置。以下是详细步骤: 1. 设置root密码 默认情况下,root账户可能无密码或使用默认密码。通过以下方法修改: 方法1:在local.conf中直接设置 # 打开Yocto工程的配置文件 vi conf/local.conf# 添…...

力扣--链表

相交链表 法一: 把A链表的节点都存HashSet里,遍历B链表找相同的节点 法二: 把A、B指针都移到末尾,再同时往回走,每次往回走都比较 当前节点的下一节点(a.next b.next ?)是否相同,当不相同…...

【redis】数据类型之hash

Redis中的Hash数据类型是一种用于存储键值对集合的数据结构。与Redis的String类型不同,Hash类型允许你将多个字段(field)和值(value)存储在一个单独的key下,从而避免了将多个相关数据存储为多个独立的key。…...

多路文件IO

一、思维导图...

计算机网络面经

文章目录 基础HTTPHTTP报文结构 (注意)RPC和http的区别TCPTCP报文结构(注意)IP基础 HTTP HTTP报文结构 (注意) 请求行:请求方法get/post,url,http版本 请求头:用户标识,请求体长度,类型,cookie 请求体:内容 状态行:状态码,状态消息、(http版本) 响应头:内…...

非递减子序列(力扣491)

这道题的难点依旧是去重,但是与之前做过的子集类问题的区别就是,这里是求子序列,意味着我们不能先给数组中的元素排序。因为子序列中的元素的相对位置跟原数组中的相对位置是一样的,如果我们改变数组中元素的顺序,子序…...

00_Machine Vision_基础介绍

基础概念 由于计算机只能处理离散的数据,所以需要将连续的图片转化为离散的数据。主要包含:空间离散以及灰度值离散 空间离散:将图片的像素点离散化,即将图片的像素点转化为一个个的小方块,即为图片的分辨率。分辨率…...

排错 -- 用React.js,Solidity,智能合约构建最新区块链应用

真枪实弹:第一个Web3项目【上集】用React.js,Solidity,智能合约构建最新区块链应用详细教程 构建web跟随b站教程中遇到了很多错误,从今天开始构建完整的应用,在此记录一些排错。 问题情况1:跟随视频后无Src文件 问题情况1解决方法&#xff1…...

【WB 深度学习实验管理】利用 Hugging Face 实现高效的自然语言处理实验跟踪与可视化

本文使用到的 Jupyter Notebook 可在GitHub仓库002文件夹找到,别忘了给仓库点个小心心~~~ https://github.com/LFF8888/FF-Studio-Resources 在自然语言处理领域,使用Hugging Face的Transformers库进行模型训练已经成为主流。然而,随着模型复…...

ximalaya(三) playUriList值解密--webpack

本文主要介绍解密音频播放url参数。 本文仅代表个人理解,如有其他建议可在评论区沟通。 声明 仅仅记录一下自己的学习方法,不作为其他参考、更不作为商业用途。如有侵犯请联系本人删除 目标地址:aHR0cHM6Ly93d3cueGltYWxheWEuY29tL3NvdW5k…...

ES6 Map 数据结构是用总结

1. Map 基本概念 Map 是 ES6 提供的新的数据结构,它类似于对象,但是"键"的范围不限于字符串,各种类型的值(包括对象)都可以当作键。Map 也可以跟踪键值对的原始插入顺序。 1.1 基本用法 // 创建一个空Map…...

使用Redis实现业务信息缓存(缓存详解,缓存更新策略,缓存三大问题)-更新中

一、什么是缓存? 缓存是一种高效的数据存储方式,它通过将数据保存在内存中来提供快速的读写访问。这种机制特别适用于需要高速数据访问的应用场景,如网站、应用程序和服务。在处理大量数据和高并发请求时, 缓存能显著提高性能和用…...

Windows 系统下使用 Ollama 离线部署 DeepSeek - R1 模型指南

引言 随着人工智能技术的飞速发展,各类大语言模型层出不穷。DeepSeek - R1 凭借其出色的语言理解和生成能力,受到了广泛关注。而 Ollama 作为一款便捷的模型管理和部署工具,能够帮助我们轻松地在本地环境中部署和使用模型。本文将详细介绍如…...

1.2 变革里程碑:Transformer 的崛起

变革里程碑:Transformer 的崛起 一、架构革命的核心驱动力 #mermaid-svg-hsXnwHI0wO2qZaqb {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#000000;}#mermaid-svg-hsXnwHI0wO2qZaqb .error-icon{fill:#552222;}#mermaid-sv…...

SpringBoot速成(八)登录实战:未登录不能访问 P5-P8

1.登录 package com.itheima.springbootconfigfile.controller;import com.itheima.springbootconfigfile.pojo.Result; import com.itheima.springbootconfigfile.pojo.User; import com.itheima.springbootconfigfile.service.UserService;import com.itheima.springbootco…...

[Unity角色控制专题] 详细说明如何使用Character Controller配合脚本实现类似MC的第一人称控制(仅移动与视角摇晃)

关于角色控制器的基本用法我就不做介绍了,请自行查看相关文档: Unity - Manual: Character Controller component reference 本文用到了三角函数和插值函数,非常简单,如有疑问请查询以下文章: Unity中的数学 之 Mathf_uni…...

2025_2_9 C语言中队列

1.队列(先进先出) 队列也是一种受限制的线性结构 它只能在一端添加元素,在另一端访问,删除元素 (队首插入,队尾删除) 因为链表实现没有数组实现快,所以队列大多数是用数组实现的 q…...

(原创,可用)SSH实现内外网安全穿透(安全不怕防火墙)

目前有A、B终端和一台服务器,A、B机器不能直接访问,服务器不能直接访问A、B终端但是A、B终端可以访问服务器,这个场景很像我们有一台电脑在单位内网,外机器想访问内网系统,可能大家目前想到的就是frp之类穿透工具&…...

mysql安装starting the server报错

win10家庭版无法启动服务的,先不要退出,返回上一栏,然后通过电脑搜索栏输入服务两个字,在里面找到mysql80,右键属性-登录,登录身份切换为本地系统就行了...

设计高效的测试用例:从需求到验证

在现代软件开发过程中,测试用例的设计一直是质量保证(QA)环节的核心。有效的测试用例不仅能够帮助发现潜在缺陷,提升软件质量,还能降低后期修复成本,提高开发效率。尽管如此,如何从需求出发&…...

【阅读笔记】信息熵自动曝光An Automatic Exposure Algorithm Based on Information Entropy

一、算法背景 信息熵作为衡量图像信息量的重要指标,能够反映图像的细节丰富程度。通过基于信息熵的自动曝光算法,可以自动调整曝光时间,使图像包含更多信息,从而提高图像质量。 灰度直方图在各个灰度值上分布越均匀,…...

Dockerfile 文件详解

在平常的开发工作中,我们经常需要部署项目,一个项目开发完成后,使用 Docker 方式部署,那么首先得构造镜像,构造镜像最主要的就是 Dockerfile 文件的编写,今天简单来总结下 Dockerfile 文件的编写以及有哪些…...

模型压缩 --学习记录2

模型压缩 --学习记录2 如何找到更好的权衡方式(模型量化)方法一:寻找更好的 range方法二:寻找更好的 X-fp32(浮点数)方法三:寻找更好的 scale 和 zp方法四:寻找更好的 roundPTQ 后训练量化(离线量化)QAT 量化感知训练(在线量化)量化为什么会带来加速?三、模型稀疏技…...

JVM常见命令

引言 掌握JVM是属于Java程序员的必修课,对线程的掌控,对内存的把控,所以了解JVM常见命令可以帮助我们快速了解虚拟机的详细数据 命令 1. java 这是最基础的命令,用于启动一个 Java 应用程序。 java -cp /path/to/your/class…...

ASP.NET Core托管服务

目录 托管服务的异常问题 托管服务中使用DI 托管服务案例:数据的定时导出 场景,代码运行在后台。比如服务器启动的时候在后台预先加载数据到缓存,每天凌晨3点把数据导出到备份数据库,每隔5秒钟在两张表之间同步一次数据。托管服…...

模型压缩中的四大核心技术 —— 量化、剪枝、知识蒸馏和二值化

一、量化 (Quantization) 量化的目标在于将原始以 32 位浮点数表示的模型参数和中间激活,转换为低精度(如 FP16、INT8、甚至更低位宽)的数值表示,从而在减少模型存储占用和内存带宽的同时,加速推理运算,特别适用于移动、嵌入式和边缘计算场景。 1.1 概念与目标 基本思想…...

C++:类和对象初识

C:类和对象初识 前言类的引入与定义引入定义类的两种定义方法1. 声明和定义全部放在类体中2. 声明和定义分离式 类的成员变量命名规则 类的访问限定符及封装访问限定符封装 类的作用域与实例化类的作用域类实例化实例化方式: 类对象模型类对象的大小存储…...

01-SDRAM控制器的设计——案例总概述

本教程重点▷▷▷ 存储器简介。 介绍 SDRAM 的工作原理。 详细讲解SDRAM 控制的Verilog 实现方法。 PLL IP和FIFO IP 的调用,计数器设计,按键边沿捕获,数码管控制。 完成SDRAM控制器应用的完整案例。 Signal Tap 调试方法。 准备工作▷…...

笔记:蓝桥杯python搜索(3-2)——DFS剪支和记忆化搜索

目录 一、DFS剪支 二、例题 P2942 数字王国之军训军队 P3075 特殊的多边形 三、记忆化搜索 四、例题 例题 P3820 混境之地 P216 地宫取宝 一、DFS剪支 在搜索过程中,如果需要完全遍历所有情况可能需要很多时间在搜索到某种状态时,根据当前状态判断…...

处理数据及其选择关键列进行一次聚类

1. 数据加载与初步处理 # 文件路径 file_path ../data/all_database_result.csv# 读取CSV文件到DataFrame df pd.read_csv(file_path)# 选择特定的特征列 selected_features [Q10, Q12, Q13, Q14]# 缺失值处理:这里简单地删除含有任何缺失值的行 df.dropna(subse…...

Qt 支持的动画格式对比,Lottie/APNG/GIF/WEBP

Qt版本:6.7.2 , QML 一,Lottie 在qml中使用LottieAnimation即可,但有三个问题: 1.动画加载中报错: 如果图片(.json)本身存在不支持的effect 或shape type等,效果并不好&#xff1a…...

FaceFusion如何设置公开链接和端口

有时候我们想在局域网内的其他设备上使用 FaceFusion,这时候需要设置公开链接和端口。 当你运行 FaceFusion 的时候,会发现有这样的一段提示: To create a public link, set shareTrue in launch().但是这个提示是错的,如果你查…...

【安当产品应用案例100集】037-强化OpenVPN安全防线的卓越之选——安当ASP身份认证系统

在当前数字化时代,网络安全已成为企业发展的重要组成部分。对于使用OpenVPN的企业而言,确保远程访问的安全性尤为重要。安当ASP身份认证系统凭借其强大的功能和便捷的集成方式,为OpenVPN的二次登录认证提供了理想的解决方案,特别是…...

RK3568实战项目(六)--开发工具介绍

目录 一、引言 二、开发工具 ------>2.1、trust_merger ------>2.2、boot_merger ------>2.3、loaderimage ------>2.4、resource_tool ------>2.5、mkimage ------>2.6、mkbootimg ------>2.7、unpack_bootimg ------>2.8、repack-bootimg …...

01.02、判定是否互为字符重排

01.02、[简单] 判定是否互为字符重排 1、题目描述 给定两个由小写字母组成的字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。 在这道题中,我们的任务是判断两个字符串 s1 和 s2 是…...

尝试一下,交互式的三维计算python库,py3d

py3d是一个我开发的三维计算python库,目前不定期在PYPI上发版,可以通过pip直接安装 pip install py3d 开发这个库主要可视化是想把自己在工作中常用的三维方法汇总积累下来,不必每次重新造轮子。其实现成的python库也有很多,例如…...

DeepSeek-R1模型的数学原理(说人话)

文章目录 1、什么是GRPO2、数学原理3、比喻4、流程总结 🍃作者介绍:双非本科大四网络工程专业在读,阿里云专家博主,前三年专注于Java领域学习,擅长web应用开发,目前已转行人工智能领域。 🦅个人…...

安宝特方案 | AR助力制造业安全巡检智能化革命!

引言: 在制造业中,传统巡检常面临流程繁琐、质量波动、数据难以追溯等问题。安宝特AR工作流程标准化解决方案,通过增强现实AR技术,重塑制造业安全巡检模式,以标准化作业流程为核心,全面提升效率、质量与…...

DeepSeek和ChatGPT的对比

最近DeepSeek大放异彩,两者之间有什么差异呢?根据了解到的信息,简单做了一个对比。 DeepSeek 和 ChatGPT 是两种不同的自然语言处理(NLP)模型架构,尽管它们都基于 Transformer 架构,但在设计目标…...

AJAX项目——数据管理平台

黑马程序员视频地址: 黑马程序员——数据管理平台 前言 功能: 1.登录和权限判断 2.查看文章内容列表(筛选,分页) 3.编辑文章(数据回显) 4.删除文章 5.发布文章(图片上传&#xff0…...

神经网络常见激活函数 5-PReLU函数

文章目录 PReLU函数导函数函数和导函数图像优缺点pytorch中的PReLU函数tensorflow 中的PReLU函数 PReLU 参数化修正线性单元:Parametric ReLU 函数导函数 PReLU函数 P R e L U { x x > 0 α x x < 0 ( α 是可训练参数 ) \rm PReLU \left\{ \begin{array}{} x \qua…...

艾蒿染色体水平基因组-文献精读111

A chromosome-scale genome assembly of Artemisia argyi reveals unbiased subgenome evolution and key contributions of gene duplication to volatile terpenoid diversity 一项关于艾蒿&#xff08;Artemisia argyi&#xff09;的染色体尺度基因组组装揭示了无偏的亚基因…...

EB生成配置的过程

EB Tresos Studio,简称EB,通过图形化的模式进行配置生成,并根据选项配置生成配置代码,即 MCAL 层各个模块的配置参数。 在 MCAL 代码中,分为静态代码和配置代码。静态代码,就是 AUTOSAR 规范内容,包含对硬件的封装以及标准化接口的封装;配置代码一般用于配置初始化结构…...

使用Docker + Ollama在Ubuntu中部署deepseek

1、安装docker 这里建议用docker来部署&#xff0c;方便简单 安装教程需要自己找详细的&#xff0c;会用到跳过 如果你没有安装 Docker&#xff0c;可以按照以下步骤安装&#xff1a; sudo apt update sudo apt install apt-transport-https ca-certificates curl software-p…...

NFT Insider #168:The Sandbox 推出新春{金蛇礼服}套装;胖企鹅合作 LINE Minini

引言&#xff1a;NFT Insider 由 NFT 收藏组织 WHALE Members、BeepCrypto 联合出品&#xff0c; 浓缩每周 NFT 新闻&#xff0c;为大家带来关于 NFT 最全面、最新鲜、最有价值的讯息。每期周报将从 NFT 市场数据&#xff0c;艺术新闻类&#xff0c;游戏新闻类&#xff0c;虚拟…...

字符串高频算法:无重复字符的最长子串

题目 3. 无重复字符的最长子串 - 力扣&#xff08;LeetCode&#xff09; 解题思路 思路 方法: 滑动窗口 [!简单思路] [^1]以示例一中的字符串 abcabcbb 为例&#xff0c;找出从每一个字符开始的&#xff0c;不包含重复字符的最长子串&#xff0c;其中最长的那个字符串即为答…...