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

Python打卡训练营Day56

DAY 56 时序数据的检验

知识点回顾:

  1. 假设检验基础知识
    1. 原假设与备择假设
    2. P值、统计量、显著水平、置信区间
  2. 白噪声
    1. 白噪声的定义
    2. 自相关性检验:ACF检验和Ljung-Box 检验
    3. 偏自相关性检验:PACF检验
  3. 平稳性
    1. 平稳性的定义
    2. 单位根检验
  4. 季节性检验
    1. ACF检验
    2. 序列分解:趋势+季节性+残差

记忆口诀:p越小,落在置信区间外,越拒绝原假设。

时序部分需要铺垫的知识非常多,相信这次应该说清楚了假设检验相关的基础知识。

import numpy as np
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings("ignore")
# 中文显示设置
plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置中文字体
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示为方块的问题# --- 1. 生成随机序列数据 ---# 为了让每次运行的结果都一样,设置一个随机种子(可选)
np.random.seed(42)# 定义序列的长度
num_points = 200# 生成一个包含 200 个点的随机序列
# np.random.randn() 从标准正态分布(均值为0,方差为1)中抽取随机样本
random_sequence = np.random.randn(num_points)print("生成的前10个数据点:")
print(random_sequence[:10])# --- 2. 可视化序列 ---# 设置图形大小
plt.figure(figsize=(12, 6))# 绘制线图
plt.plot(random_sequence, label='Random Sequence (White Noise)')# 添加标题和标签
plt.title('Visualization of a Randomly Generated Sequence', fontsize=16)
plt.xlabel('Time Step (时间步)', fontsize=12)
plt.ylabel('Value (值)', fontsize=12)# 添加一条水平线,表示序列的均值(接近于0)
plt.axhline(y=0, color='r', linestyle='--', label='Mean (均值 ≈ 0)')# 显示网格和图例
plt.grid(True, linestyle='--', alpha=0.6)
plt.legend()# 显示图形
plt.show()from statsmodels.graphics.tsaplots import plot_acf 
print("--- 开始检验白噪声属性 ---")# 检验 1: 均值是否接近 0
mean = np.mean(random_sequence)
print(f"1. 序列的均值: {mean:.4f}")
if -0.1 < mean < 0.1:print("   (结论: 均值非常接近0,满足条件。)\n")
else:print("   (结论: 均值偏离0较远。)\n")# 检验 2: 方差是否恒定(且接近理论值1)
# 对于我们生成的数据,方差恒定是与生俱来的。我们主要检查其值。
variance = np.var(random_sequence)
print(f"2. 序列的方差: {variance:.4f}")
if 0.8 < variance < 1.2:print("   (结论: 方差接近于1,满足条件。np.random.randn理论方差为1)\n")
else:print("   (结论: 方差偏离1较远。)\n")# 检验 3: 自相关性是否为 0
# 这是最核心的检验。我们通过绘制ACF图来完成。
print("3. 检验自相关性 (使用ACF图):")
print("   - ACF图展示了序列与它过去值之间的相关性。")
print("   - 对于白噪声,只有lag=0时相关性为1,其他所有lag的相关性都应在蓝色置信区间内(统计上不显著)。")# 创建一个新的图形来绘制ACF图
fig, ax = plt.subplots(figsize=(12, 5))
plot_acf(random_sequence, lags=30, ax=ax) # 我们查看前30个滞后的相关性
ax.set_title('序列的自相关函数图 (ACF Plot)')
ax.set_xlabel('Lag (滞后阶数)')
ax.set_ylabel('Autocorrelation (自相关系数)')
plt.grid(True, linestyle='--', alpha=0.6)
plt.show()from statsmodels.graphics.tsaplots import plot_pacf # 引入PACF图
# --- 绘制PACF图 ---
fig, ax = plt.subplots(figsize=(12, 5))
plot_pacf(random_sequence, lags=30, ax=ax)
ax.set_title('序列的偏自相关函数图 (PACF Plot)')
ax.set_xlabel('Lag (滞后阶数)')
ax.set_ylabel('Partial Autocorrelation')
plt.grid(True, linestyle='--', alpha=0.6)
plt.show()# --- 新增:使用 Ljung-Box 检验进行严格的白噪声检验 ---
# 引入Ljung-Box检验的函数
from statsmodels.stats.diagnostic import acorr_ljungbox 
print("\n" + "="*50)
print("4. 进行严格的白噪声检验 (Ljung-Box Test)")
print("="*50)
print("   - 原假设(H₀): 序列是白噪声。")
print("   - 判断标准: 如果 p-value > 0.05,则接受原假设,认为序列是白噪声。")# 执行Ljung-Box检验
# 我们通常会检查一系列的滞后项,比如前10、20、30个
# 函数返回一个包含统计量和p值的DataFrame
ljung_box_result = acorr_ljungbox(random_sequence, lags=[10, 20, 30], return_df=True)print("\nLjung-Box检验结果:")
print(ljung_box_result)# --- 结论解释 ---
print("\n--- 检验结论 ---")
# 我们可以检查最后一个(最严格的)p值
# .iloc[-1] 获取最后一行, .loc['lb_pvalue'] 获取p值
last_p_value = ljung_box_result.iloc[-1]['lb_pvalue']if last_p_value < 0.05:print(f"在滞后30阶时,p-value ({last_p_value:.4f}) 小于 0.05。")print("结论:我们拒绝原假设,该序列不是白噪声。")
else:print(f"在滞后30阶时,p-value ({last_p_value:.4f}) 大于 0.05。")print("结论:我们无法拒绝原假设,该序列是白噪声。")# 引入ADF检验的函数
from statsmodels.tsa.stattools import adfuller # --- 新增:使用ADF检验来判断平稳性 ---print("开始进行ADF平稳性检验...")# 执行ADF检验
# adfuller()函数会返回一个包含多个结果的元组
adf_result = adfuller(random_sequence)# 提取并展示主要结果
adf_statistic = adf_result[0]
p_value = adf_result[1]
critical_values = adf_result[4]print(f"ADF统计量 (ADF Statistic): {adf_statistic:.4f}")
print(f"p值 (p-value): {p_value:.4f}")
print("临界值 (Critical Values):")
for key, value in critical_values.items():print(f'    {key}: {value:.4f}')print("\n--- 检验结论 ---")
# 根据p值进行判断
if p_value < 0.05:print(f"p-value ({p_value:.4f}) 小于 0.05,我们强烈拒绝原假设(H₀)。")print("结论:该序列是平稳的 (Stationary)。")
else:print(f"p-value ({p_value:.4f}) 大于或等于 0.05,我们无法拒绝原假设(H₀)。")print("结论:该序列是非平稳的 (Non-stationary)。")# 也可以通过比较ADF统计量和临界值来判断,结论是一致的
if adf_statistic < critical_values['5%']:print("\n补充判断:ADF统计量小于5%的临界值,同样表明序列是平稳的。")import numpy as np
import matplotlib.pyplot as plt
from statsmodels.tsa.seasonal import seasonal_decompose
from statsmodels.graphics.tsaplots import plot_acf
# 显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置中文字体
plt.rcParams['axes.unicode_minus'] = False# --- 1. 创建一个带季节性的序列 ---
# 我们模拟一个为期5年的月度数据(60个点)
num_points = 60
time = np.arange(num_points)# a. 创建一个线性趋势
trend = 0.5 * time# b. 创建一个季节性成分(周期为12个月)
# 使用sin函数来模拟年度周期性波动
seasonal_component = 15 * np.sin(2 * np.pi * time / 12)# c. 创建一些随机噪声
np.random.seed(10)
noise = np.random.randn(num_points) * 2# d. 合成最终序列
seasonal_data = trend + seasonal_component + noise# --- 2. 开始检验季节性 ---# 方法一:肉眼观察
print("--- 方法一:肉眼观察 ---")
plt.figure(figsize=(14, 6))
plt.plot(seasonal_data)
plt.title('带趋势和季节性的时间序列图', fontsize=16)
plt.xlabel('时间步 (月)')
plt.ylabel('值')
plt.grid(True, linestyle='--', alpha=0.6)
plt.show()
# 观察:我们可以清晰地看到一个整体上升的趋势,以及每年重复的波峰和波谷。# 方法二:ACF图
print("\n--- 方法二:ACF图 ---")
fig, ax = plt.subplots(figsize=(14, 6))
plot_acf(seasonal_data, lags=30, ax=ax)
ax.set_title('季节性序列的ACF图')
plt.grid(True, linestyle='--', alpha=0.6)
plt.show()
# 观察:ACF图不仅整体缓慢下降(表明有趋势),更重要的是在lag=12和24的位置出现了明显的峰值!# 方法三:序列分解
print("\n--- 方法三:序列分解 ---")
# 使用statsmodels进行分解(假设为加法模型)
decomposition = seasonal_decompose(seasonal_data, model='additive', period=12)# 绘制分解图
fig = decomposition.plot()
fig.set_size_inches(14, 8)
plt.suptitle('时间序列分解图', y=1.02, fontsize=16)
plt.show()
# 观察:分解图清晰地将数据拆分成了趋势、季节性和残差。季节性部分呈现完美的年度周期,而残差看起来像随机噪声。

作业:自行构造数据集,来检查是否符合这个要求。

记忆口诀:p越小,落在置信区间外,越拒绝原假设。

什么叫做白噪声呢?他需要满足以下条件:

1. 均值为0

2. 方差恒定

3. 自相关性为0(即过去的值对未来的值没有影响)

# 构造数据集 24h动态变化周期性的函数 模拟5day中每个24h人口流动的数据集 
num_points = 120
time = np.arange(num_points)# a. 创建一个线性趋势
trend = 1.0 * time# b. 创建一个季节性成分(周期为24h)
# 使用sin函数来模拟周期性波动
day_component = 15 * np.sin(2 * np.pi * time / 24)# c. 创建一些随机噪声
np.random.seed(10)
noise = np.random.randn(num_points) * 2# d. 合成最终序列
daily_data = trend + day_component + noise#step0 可视化
# 设置图形大小
plt.figure(figsize=(12, 6))# 绘制线图
plt.plot(daily_data, label='Daily Data')# 添加标题和标签
plt.title('Visualization of a 24h Dynamic Periodic Time Series', fontsize=16)
plt.xlabel('Time Step (时间步)', fontsize=12)
plt.ylabel('Value (值)', fontsize=12)# 添加一条水平线,表示序列的均值(接近于0)
plt.axhline(y=0, color='r', linestyle='--', label='Mean (均值 ≈ 0)')# 显示网格和图例
plt.grid(True, linestyle='--', alpha=0.6)
plt.legend()# 显示图形
plt.show()#step1 可预测性检验 使用 Ljung-Box 检验进行严格的白噪声检验 
print("\n" + "="*50)
print("4. 进行严格的白噪声检验 (Ljung-Box Test)")
print("="*50)
print("   - 原假设(H₀): 序列是白噪声。")
print("   - 判断标准: 如果 p-value > 0.05,则接受原假设,认为序列是白噪声。")# 执行Ljung-Box检验
# 我们通常会检查一系列的滞后项,比如前10、20、30个
# 函数返回一个包含统计量和p值的DataFrame
ljung_box_result = acorr_ljungbox(daily_data, lags=[10, 20, 30], return_df=True)print("\nLjung-Box检验结果:")
print(ljung_box_result)# --- 结论解释 ---
print("\n--- 检验结论 ---")
# 我们可以检查最后一个(最严格的)p值
# .iloc[-1] 获取最后一行, .loc['lb_pvalue'] 获取p值
last_p_value = ljung_box_result.iloc[-1]['lb_pvalue']if last_p_value < 0.05:print(f"在滞后30阶时,p-value ({last_p_value:.4f}) 小于 0.05。")print("结论:我们拒绝原假设,该序列不是白噪声。")
else:print(f"在滞后30阶时,p-value ({last_p_value:.4f}) 大于 0.05。")print("结论:我们无法拒绝原假设,该序列是白噪声。")#step2 平稳性检验
# --- 新增:使用ADF检验来判断平稳性 ---print("开始进行ADF平稳性检验...")# 执行ADF检验
# adfuller()函数会返回一个包含多个结果的元组
adf_result = adfuller(daily_data)# 提取并展示主要结果
adf_statistic = adf_result[0]
p_value = adf_result[1]
critical_values = adf_result[4]print(f"ADF统计量 (ADF Statistic): {adf_statistic:.4f}")
print(f"p值 (p-value): {p_value:.4f}")
print("临界值 (Critical Values):")
for key, value in critical_values.items():print(f'    {key}: {value:.4f}')print("\n--- 检验结论 ---")
# 根据p值进行判断
if p_value < 0.05:print(f"p-value ({p_value:.4f}) 小于 0.05,我们强烈拒绝原假设(H₀)。")print("结论:该序列是平稳的 (Stationary)。")
else:print(f"p-value ({p_value:.4f}) 大于或等于 0.05,我们无法拒绝原假设(H₀)。")print("结论:该序列是非平稳的 (Non-stationary)。")# 也可以通过比较ADF统计量和临界值来判断,结论是一致的
if adf_statistic < critical_values['5%']:print("\n补充判断:ADF统计量小于5%的临界值,同样表明序列是平稳的。")#step3 结构识别(序列分解,ACF/PACF)
print("\n--- 方法二:ACF图 ---")
fig, ax = plt.subplots(figsize=(14, 6))
plot_acf(daily_data, lags=30, ax=ax)
ax.set_title('24h序列的ACF图')
plt.grid(True, linestyle='--', alpha=0.6)
plt.show()
# 观察:ACF图不仅整体缓慢下降(表明有趋势)# 方法三:序列分解
print("\n--- 方法三:序列分解 ---")
# 使用statsmodels进行分解(假设为加法模型)
decomposition = seasonal_decompose(daily_data, model='additive', period=24)# 绘制分解图
fig = decomposition.plot()
fig.set_size_inches(14, 8)
plt.suptitle('时间序列分解图', y=1.02, fontsize=16)
plt.show()
# 观察:分解图清晰地将数据拆分成了趋势、季节性和残差。季节性部分呈现完美的年度周期,而残差看起来像随机噪声。#stpe4 数据清洗 箱线图和Z分数识别异常值
# 绘制箱线图
plt.figure(figsize=(12, 6))
plt.boxplot(daily_data, vert=False, widths=0.5, patch_artist=True, boxprops=dict(facecolor='blue', color='blue'))
plt.title('24h动态周期性时间序列的箱线图', fontsize=16)
plt.xlabel('值', fontsize=12)
plt.yticks([])  # 隐藏y轴刻度
plt.grid(True, linestyle='--', alpha=0.6)
plt.show()
# 观察:箱线图显示了数据的四分位数、中位数和异常值。这里没有明显的异常值,数据分布相对比较均匀。# 计算Z分数并识别异常值
# 计算Z分数
z_scores = np.abs((daily_data - daily_data.mean()) / daily_data.std())# 定义Z分数阈值(例如:超过3个标准差)
z_threshold = 3# 识别异常值
outlier_indices = np.where(z_scores > z_threshold)[0]# 打印异常值的索引和值
if outlier_indices.size > 0:print(f"发现 {outlier_indices.size} 个异常值(超过Z分数阈值):")for idx in outlier_indices:print(f"索引 {idx}: 值 {daily_data[idx]:.4f}, Z分数 {z_scores[idx]:.4f}")
else:print("没有发现异常值。")

==================================================

进行严格的白噪声检验 (Ljung-Box Test) ================================================== -

原假设(H₀): 序列是白噪声。

- 判断标准: 如果 p-value > 0.05,则接受原假设,认为序列是白噪声。

Ljung-Box检验结果: lb_stat lb_pvalue 10 869.534899 2.289377e-180 20 1307.450690 7.507512e-265 30 1529.131369 2.447689e-303

--- 检验结论 --- 在滞后30阶时,p-value (0.0000) 小于 0.05。

结论:我们拒绝原假设,该序列不是白噪声。

开始进行ADF平稳性检验

... ADF统计量 (ADF Statistic): -0.2350

p值 (p-value): 0.9342

临界值 (Critical Values): 1%: -3.4936    5%: -2.8892   10%: -2.5815

--- 检验结论 --- p-value (0.9342) 大于或等于 0.05,我们无法拒绝原假设(H₀)。

结论:该序列是非平稳的 (Non-stationary)。

Z-scores 没有发现异常值。

浙大疏锦行-CSDN博客

相关文章:

Python打卡训练营Day56

DAY 56 时序数据的检验 知识点回顾&#xff1a; 假设检验基础知识 原假设与备择假设P值、统计量、显著水平、置信区间 白噪声 白噪声的定义自相关性检验&#xff1a;ACF检验和Ljung-Box 检验偏自相关性检验&#xff1a;PACF检验 平稳性 平稳性的定义单位根检验 季节性检验 ACF检…...

没掌握的知识点记录

1、微内核的主要优点在于结构清晰、内核代码量少&#xff0c;安全性和可靠性高、可移植性强、可伸缩性、可扩展性高&#xff1b;其缺点是难以进行良好的整体优化、进程间互相通信的开销大、内核功能代码不能被直接调用而带来服务的效率低。 2、题目&#xff1a; 分页内存管理…...

Python商务数据分析——Python 入门基础知识学习笔记

一、简介 1.1 Python 特性 解释型语言&#xff1a;代码无需编译可直接运行&#xff0c;适合快速开发。 动态类型&#xff1a;变量类型在运行时确定&#xff08;如x1后x"str"仍合法&#xff09;。 面向对象&#xff1a;支持类、对象、继承等特性&#xff0c;代码可…...

企业级安全实践:SSL 加密与权限管理(二)

权限管理&#xff1a;企业数据的守护者 权限管理的基本概念与重要性 权限管理&#xff0c;是指根据系统设置的安全规则或策略&#xff0c;用户可以访问且仅能访问自己被授权的资源&#xff0c;不多不少 。它是企业信息安全体系的重要组成部分&#xff0c;旨在确保只有授权的人…...

JavaScript 的 “==” 存在的坑

(双等) 指的是宽松相等 — 会做隐式类型转换 举例&#xff1a;0 // true 5 5 // true (三等) 指的是严格相等 — 类型和值都相等才 true 举例&#xff1a;0 // false 5 5 // false 在业务逻辑里经常因为隐式转换导致条件误判&#xff0c;业界普遍推荐 一律用 / !。 举…...

深度解析云计算网络架构:VLAN+OVS+Bonding构建高可靠虚拟化平台

——从物理设备到虚拟机流量的全链路剖析 核心技术组合&#xff1a;VLAN逻辑隔离 OVS虚拟交换 Bonding链路聚合 超融合网络管理 一、架构全景&#xff1a;物理与虚拟网络的协同&#xff08;附架构图&#xff09; 核心设计哲学 #mermaid-svg-VbGP3fCgNnoLVMgH {font-family:&…...

Git使用总结

1.基本概念&#xff1a; Git中的区域&#xff1a; git中有几个区域&#xff1b;本地工作区&#xff1b;本地提交区&#xff1b;origin远端。 一般来说的工作上传顺序是&#xff1a; 将修改文件添加到工作区域----提交到本地提交区域----push到远端分支 Git中的分支 远端和…...

爬虫入门练习(文字数据的爬取)

爬取csdn用户的用户简介 学习一下 BeautifulSoup方法 from bs4 import BeautifulSoup html_content """ <html> <head><title>示例网页</title> </head> <body><h1 class"main-title">欢迎学习Beauti…...

MySQL学习(1)——基础库操作

欢迎来到博主的专栏:MySQL学习 博主ID:代码小豪 文章目录 数据库原理基础库操作增删数据库数据库编码与校验规则验证不同的校验规则对于库中数据的影响 备份与恢复数据库 数据库原理 mysql版本:mysql8.0 操作系统:ubuntu22.4 为了减少由于环境配置以及权限限制带来的使用问题&…...

P99延迟:系统性能优化的关键指标

理解P99延迟 当谈论系统性能时&#xff0c;延迟指标扮演着至关重要的角色。其中&#xff0c;P99延迟作为最重要的性能指标之一&#xff0c;能够帮助我们识别系统的性能瓶颈&#xff0c;优化用户体验。 构建一个功能完善的后端系统&#xff0c;通过了所有功能测试&#xff0c;准…...

人工智能、机器人最容易取哪些体力劳动和脑力劳动

人工智能、机器人最容易取哪些体力劳动和脑力劳动 人工智能和机器人的发展可以替代人类简单的体力劳动和脑力劳动&#xff0c;但很难替代复杂的体力劳动和脑力劳动。 肌肉收缩的原理和运动特点 人类的体力劳动是靠肌肉的收缩完成的&#xff0c;其工作原理是肌肉内的肌球蛋白…...

【代码解析】opencv 安卓 SDK sample - 1 - HDR image

很久没有写安卓了&#xff0c;复习复习。用的是官方案例&#xff0c;详见opencv-Android-sdk 包 // 定义包名&#xff0c;表示该类的组织路径 package org.opencv.samples.tutorial1;// 导入所需的OpenCV和Android类库 import org.opencv.android.CameraActivity; // OpenCV…...

管理综合知识点

比与比例涉及的问题 比与比例基础知识比例的转换正反比例浓度问题利润问题增长率问题比例与面积行程问题 一、比例转换与性质 核心公式&#xff1a; 若 a : b c : d a:b c:d a:bc:d或 a b c d \frac{a}{b} \frac{c}{d} ba​dc​ → a d b c ad bc adbc&#xff08;交…...

机器学习:特征向量与数据维数概念

特征向量与数据维数概念 一、特征向量与维数的定义 特征向量与特征类别 在机器学习和数据处理中&#xff0c;每个样本通常由多个特征&#xff08;Feature&#xff09; 描述。例如&#xff0c;一张图片的特征可能包括颜色、形状、纹理等&#xff1b;一个客户的特征可能包括年龄…...

《情感反诈模拟器》2025学习版

1.2 专业内容支持 67篇情感诈骗案例研究14万字心理学分析资料783条专业配音对白 二、安装与运行 2.1 系统要求 最低配置&#xff1a; 显卡&#xff1a;GTX 1060CPU&#xff1a;i5-8400存储&#xff1a;25GB空间 2.2 运行步骤 解压游戏文件&#xff08;21.7GB&#xff09;…...

C++ - 标准库之 <string> npos(npos 概述、npos 的作用)

一、std::string::npos 概述 std::string::npos 是一个静态常量&#xff0c;表示 size_t 类型的最大值 std::string::npos 用于表示字符串操作中的未找到的位置或无效位置 std::string::npos 属于 C 标准库中的 <string> 头文件 二、std::string::npos 的作用 std::s…...

策略设计模式

1. 什么是策略模式 策略模式是一种行为型设计模式&#xff0c;它定义了一系列算法&#xff0c;并将每个算法封装起来&#xff0c;使它们可以相互替换&#xff0c;且算法的变化不会影响使用算法的客户端,客户端中的具体实现只需要了解上下文类。 2. 由什么组成 策略接口&…...

C++结构体初始化与成员函数实现语法详解

C结构体初始化与成员函数实现语法详解 一、结构体静态成员初始化语法 在C中&#xff0c;静态成员变量需要在类外部进行定义和初始化。提供的代码展示了如何为MAIN_PROPULSION_CAN类的静态成员变量进行初始化&#xff1a; MAIN_PROPULSION_CAN::VoltageThresholds MAIN_PROPU…...

第八章 网络安全

1 什么是网络安全 安全通信具有的性质&#xff1a; 机密性&#xff1a;只有发送方和希望的接收方能否理解传输的报文内容&#xff08;发送方加密报文&#xff0c;接收方解密报文&#xff09;认证&#xff08;端点鉴别&#xff09;&#xff1a;发送方和接收方需要确认对方的身…...

开源 python 应用 开发(一)python、pip、pyAutogui、python opencv安装

最近有个项目需要做视觉自动化处理的工具&#xff0c;最后选用的软件为python&#xff0c;刚好这个机会进行系统学习。短时间学习&#xff0c;需要快速开发&#xff0c;所以记录要点步骤&#xff0c;防止忘记。 链接&#xff1a; 开源 python 应用 开发&#xff08;一&#x…...

CMCC RAX3000M nand版 OpenWrt 可用空间变小的恢复方法

文章目录 问题背景尝试一、通过 Tftpd64 重新刷写 initramfs-recovery 镜像 &#xff08;不成功&#xff09;尝试二、重新分配 ubi 卷&#xff08;此操作存在一定的危险&#xff0c;请查阅相关资料&#xff0c;避免影响到核心分区&#xff09; 问题背景 CMCC RAX3000M Nand 版…...

云函数调测、部署及日志查看

1、调试云函数 业务函数开发完成后&#xff0c;需要验证函数代码的正确性&#xff0c;DevEco Studio工具支持本地调用和远程调用两种形式的调试函数方法&#xff0c;首先来看看通过本地调用方式调试函数。 1&#xff09;通过本地调用方式调试云函数 为了验证函数的正确性以及…...

逆向某物 App 登录接口:还原 newSign 算法全流程

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ newSign 参数分析 通过 Hook Java 层加密算法得到 newSign 参数相关信息如下&#xff1a; 具体参考&#xff1a;逆向某物 App 登录接口&#xff1a;抓包分析…...

2140、解决智力问题

题目 解答 正向不好做&#xff0c;反向遍历。 定义&#xff1a;dp[i] [i,n)的分数 初始化&#xff1a;dp[n]0 递推&#xff1a;dp[i]max(dp[i1],questions[i][0]dp[iquestions[i][1]1]) 如果越界了&#xff0c;就截断到dp[n] 最后return dp[0]即可 class Solution { publ…...

肖臻《区块链技术与应用》第六讲:比特币网络

一、分层架构&#xff1a;应用层之下的P2P网络 比特币并非凭空运作&#xff0c;它的协议运行在互联网的应用层之上。而在其底层&#xff0c;支撑整个系统的是一个对等网络&#xff08;Peer-to-Peer, P2P&#xff09;。可以这样理解&#xff1a; 应用层 (Application Layer): …...

(C++)素数的判断(C++教学)(C语言)

源代码&#xff1a; #include <iostream> using namespace std;int fun(int num){if(num<1){return 1;}if(num%20){return 0;}else{return 2;} }int main(){while (1){int y0;int num0;cout<<"请输入一个整数&#xff1a;\n";cin>>num;yfun(nu…...

openai-agents实现input_guardrails

目录 版本模块引入自定义LLM模型input_guardrail设置main函数 代码&#xff1a; input_guardrails.ipynb 版本 import agents print(agents.__version__)0.0.19模块引入 from __future__ import annotationsfrom pydantic import BaseModelfrom agents import (Agent,Guardr…...

在高数中 导数 微分 不定积分 定积分 的意义以及联系

在高等数学中&#xff0c;导数、微分、不定积分、定积分是微积分的核心概念&#xff0c;它们既有明确的定义和几何/物理意义&#xff0c;又相互关联。下面分别说明它们的意义&#xff0c;并总结它们之间的联系。 导数的意义 定义&#xff1a; 函数 y f(x) 在点 x 处的导数定义…...

Linux系统基本操作指令

Linux系统基本操作指令 文章目录 Linux系统基本操作指令一、介绍二、基础设置2.1 设置ubuntu与window的共享目录2.2 ubuntu系统简单介绍 三、Linux命令及工具介绍3.1 目录管理命令(功能&#xff0c;格式&#xff0c;参数&#xff0c;系统参数)3.2 文件操作命令 四、网络命令4.1…...

「Linux文件及目录管理」vi、vim编辑器

知识点解析 vi/vim编辑器简介 vi:Linux默认的文本编辑器,基于命令行操作,功能强大。vim:vi的增强版,支持语法高亮、多窗口编辑、插件扩展等功能。vi/vim基本模式 命令模式:默认模式,用于移动光标、复制、粘贴、删除等操作。插入模式:按i进入,用于输入文本。末行模式:…...

等等等等等等

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和技术。 …...

JAVA集合篇--深入理解ConcurrentHashMap图解版

一、前言 在Java并发编程中&#xff0c;线程安全的Map实现一直是一个重要话题。虽然我们可以使用Collections.synchronizedMap()或者HashTable来获得线程安全的Map&#xff0c;但它们的性能在高并发场景下往往不尽人意。ConcurrentHashMap作为Java并发包中的重要组件&#xff0…...

Python嵌套循环

一、前言 在 Python 编程中&#xff0c;嵌套循环&#xff08;Nested Loops&#xff09; 是指在一个循环的内部再嵌套另一个循环。这种结构常用于处理多维数据结构&#xff08;如二维数组、矩阵&#xff09;、遍历组合数据、图形绘制等场景。 虽然嵌套循环在逻辑上更复杂&…...

linux编译安装nginx

1.到官网(nginx)下载nginx压缩包&#xff1a; 2.以&#xff08;nginx-1.24.0.tar.gz&#xff09;为例&#xff1a; 1.上传压缩包至linux服务器&#xff1a; rz 2.解压压缩包nginx-1.24.0.tar.gz&#xff1a; tar -zxvf nginx-1.24.0.tar.gz 3.在安装Nginx之前&#xff0c;需…...

算法-动态规划-钢条切割问题

钢条切割问题是一个经典的动态规划问题&#xff0c;旨在通过切割钢条获得最大收益。以下是详细解释和解决方案&#xff1a; 问题描述 给定长度为 n 的钢条和价格表 p&#xff0c;其中 p[i] 表示长度为 i 的钢条的价格&#xff08;i 1, 2, ..., n&#xff09;。目标&#xff…...

Java八股文——系统场景设计

如何设计一个秒杀场景&#xff1f; 面试官您好&#xff0c;设计一个秒杀系统&#xff0c;是对一个工程师综合技术能力的巨大考验。它的核心挑战在于&#xff0c;如何在极短的时间内&#xff0c;应对超高的并发请求&#xff0c;同时保证数据&#xff08;尤其是库存&#xff09;…...

如何在FastAPI中玩转GitHub认证,让用户一键登录?

title: 如何在FastAPI中玩转GitHub认证,让用户一键登录? date: 2025/06/22 09:11:47 updated: 2025/06/22 09:11:47 author: cmdragon excerpt: GitHub第三方认证集成通过OAuth2.0授权码流程实现,包含用户跳转GitHub认证、获取授权码、交换访问令牌及调用API获取用户信息四…...

[RPA] 影刀RPA实用技巧

1.给数字添加千分位分隔符 将变量variable的数值(2025.437)添加千分位分隔符&#xff0c;使其变为2,025.437 流程搭建&#xff1a; 关键指令&#xff1a; 2.删除网页元素 将bilibili官网的"动态"图标进行删除 流程搭建&#xff1a; 关键指令&#xff1a; 呈现效果…...

RA4M2开发IOT(7)----RA4M2驱动涂鸦CBU模组

RA4M2开发IOT.7--RA4M2驱动涂鸦CBU模组 概述视频教学样品申请硬件准备参考程序初始化 LSM6DSV16X 传感器初始化单双击识别主程序接口RA4M2接口生成UARTUART属性配置R_SCI_UART_Open()函数原型回调函数user_uart_callback0 ()变量定义更新敲击状态DP同步长按进入配网涂鸦协议解析…...

华为公布《鸿蒙编程语言白皮书》V1.0 版:解读适用场景

6 月 22 日消息&#xff0c;华为现已在其开发者网站上架《鸿蒙编程语言白皮书》V1.0 版本&#xff0c;主要围绕鸿蒙 HarmonyOS 整体框架、适用场景、演进策略、未来愿景四大角度进行阐述&#xff0c;文档访问地址&#xff08;https://developer.huawei.com/consumer/cn/doc/gui…...

多源异构数据接入与实时分析:衡石科技的技术突破

在数字化转型的浪潮中&#xff0c;企业每天产生的数据量呈指数级增长。这些数据来自CRM系统、IoT设备、日志文件、社交媒体、交易平台等众多源头&#xff0c;格式各异、结构混乱、流速不一。传统的数据处理方式如同在无数孤立的岛屿间划着小船传递信息&#xff0c;效率低下且无…...

多设备Obsidian笔记同步:WebDAV与内网穿透技术高效实现教程

文章目录 前言1. Windows开启Webdav服务2. 客户端测试3. 安装Cpolar内网穿透实现公网访问Webdav4. 同步PC端笔记至WebDav4.1 首先需要在IIS中添加md的格式4.2 在Obsidian中安装第三方插件 5. 同步手机端笔记至WebDav 前言 各位好&#xff01;在数字化浪潮席卷的当下&#xff0…...

Linux->进程概念(精讲)

引入&#xff1a;本文会讲到的东西有哪些&#xff1f; 注&#xff1a;要讲就讲清楚&#xff0c;所以从0到懂&#xff0c;目录在右侧 一&#xff1a;冯诺依曼体系结构 1&#xff1a;人物介绍 冯诺依曼是一个伟大的人&#xff0c;他提出了一个体系结构&#xff0c;被命名冯诺依…...

【舞蹈】PC-Dance:姿势可控的音乐驱动舞蹈合成

PC-Dance:姿势可控的音乐驱动舞蹈合成 自监督节奏对齐学习音乐到舞蹈的对齐嵌入-PC-Syn 中,依然怒了一种用于 自适应运动图构建(AMGC)的高效方案,可以基于图的优化效率并保持动作的多样性。 舞蹈合成 整体情况 我们的系统主要由音乐到舞蹈对齐嵌 入网络(M2D-Align)和姿势…...

uni-app项目实战笔记22--图片预览和切换

需求描述&#xff1a; 1、图片预览时&#xff0c;通常需要知道&#xff0c;当前预览的是第几张&#xff0c;总共有多少张图片&#xff1b; 2、当用户左右滑动切换预览图片时&#xff0c;当前预览索引需要随着进行切换。 下面简单介绍下实现过程&#xff1a; 1、在图片列表页…...

[特殊字符] AIGC工具深度实战:GPT与通义灵码如何彻底重构企业开发流程

&#x1f50d; 第一模块&#xff1a;理念颠覆——为什么AIGC不是“玩具”而是“效能倍增器”&#xff1f; ▍企业开发的核心痛点图谱&#xff08;2025版&#xff09; ​​研发效能瓶颈​​&#xff1a;需求膨胀与交付时限矛盾持续尖锐&#xff0c;传统敏捷方法论已触天花板​…...

华为OD机考-用户调度问题-DP(JAVA 2025B卷)

import java.util.Scanner;public class UserScheduling {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int n scanner.nextInt(); // 用户个数int[][] costs new int[n][3]; // 存储每个用户使用A/B/C策略的系统消耗for (int i 0; i …...

【论文阅读 | CVPR 2024 |Fusion-Mamba :用于跨模态目标检测】

论文阅读 | CVPR 2024 |Fusion-Mamba &#xff1a;用于跨模态目标检测 1.摘要&&引言2.方法2.1 预备知识2.2 Fusion-Mamba2.2.1 架构特征提取与多模态融合&#xff08;FMB模块&#xff09;FMB的应用与输出2.2.2 关键组件3.2.2.1 SSCS 模块&#xff1a;浅层跨模态特征交互…...

Python 数据分析与可视化 Day 4 - Pandas 数据筛选与排序操作

&#x1f3af; 今日目标 掌握 Pandas 中 groupby() 的使用方式学会使用 agg() 方法进行多个聚合掌握 pivot_table() 构建透视表结合分组与排序进行更深入的分析 &#x1f9ee; 一、基本分组统计&#xff08;groupby&#xff09; ✅ 分组 单列聚合 df.groupby("性别&qu…...

基于Vue.js的图书管理系统前端界面设计

一、系统前端界面设计要求与效果 &#xff08;一&#xff09;系统功能结构图 设计一个基于Vue.js的图书管理系统前端界面。要充分体现Vue的核心特性和应用场景&#xff0c;同时结合信息管理专业的知识。要求系统分为仪表盘、图书管理、借阅管理和用户管理四个主要模块&#x…...