时间序列算法---ARIMA

时间序列其他相关参考文章:
时间序列分类任务—tsfresh库
时间序列预测—Prophet
python时间序列处理
有季节效应的非平稳序列分析
  现代时间序列分析方法主要有两个不同的方向:一个方向是由外向内的分析视角产生的方法是与确定性因素分解相关的方法;一个方向是由内向外的分析视角产生的方法是时域分析方法

一、确定性因素分析方法

  确定性因素分解方法认为所有的序列波动都可以归纳为受到如下四大类因素的综合影响:
长期趋势(Trend)。序列呈现出明显的长期递增或递减的变化趋势。
循环波动(Circle)。序列呈现出从低到高再由高到低的反复循环波动。循环周期可长可短,不一定是固定的。
季节性变化(Season)。序列呈现出和季节变化相关的稳定周期波动。
随机波动(lmmediate)。除了长期趋势、循环波动和季节性变化之外,其他不能用确定性因素解释的序列波动,都属于随机波动。
常用的模型:
加法模型:x=T+C+S+I
乘法模型:x=TxCxSxI

1.1、确定性因素分析方法

指数平滑预测方法
  简单指数平滑(平稳序列预测)
  Holt两参数指数平滑(趋势序列预测)
  HoltWinters三参数指数平滑(周期序列预测)
以X11/X12模型为核心的各种季节调整模型
  X11模型是第二次世界大战之后,美国人口普查局委托统计学家进行的基于计算机自动进行的时间序列因素分解方法。1954年,X0版本面世,随后十多年陆续推出新的改进版本。1965年,推出成熟版本X11。
  1975年,加拿大统计局将ARIMA模型引入X11模型,开发了X11-ARIMA模型。ARIMA模型可以对序列进行向后预测扩充数据,以保证拟合数据的完整性,弥补了中心移动平均方法的缺陷。
  1998年,美国人口普查局开发了X12-ARIMA模型。它的改进是将一些特殊因素作为干预变量引入研究。这些干预变量包括:特殊节假日、固定季节因素、工作日因素、交易日因素、闰年因素,以及研究人员自行定义的任意自变量。
  2006年美国人口普查局再次推出更新版本X13-ARIMA-Seats,它是在X12-ARIMA的基础上,增加了seats季节调整方法。

二、时域分析方法

  时域分析方法主要是从序列自相关的角度揭示时间序列的发展规律。时域分析方法的理论基础:Wold分解定理Cramer分解定理
  Wold分解定理证明任何平稳序列都可以分解为确定性序列随机序列之和;Wold分解定理是现代时间序列分析理论的灵魂,是构造ARMA模型拟合平稳序列的理论基础。基于Wold分解定理可以建立:AR模型(自回归模型)MA模型(移动平均模型)ARMA模型(自回归移动平均模型)
  Cramer是Wold的指导老师,Cramer分解定理(1962年)是Wold分解定理的理论推广,它是非平稳序列的分解理论,是构造ARIMA模型的理论基础。基于Cramer分解定理可以建立:ARIMA模型
  AR模型只依赖于自身的过去值,MA模型则依赖于过去的误差项。ARMA模型结合了这两者,既考虑过去值也考虑误差项。因此,ARMA模型可以看作是AR和MA模型的结合体,适用于平稳时间序列分析。ARIMA模型(差分自回归移动平均模型)是在ARMA模型的基础上引入了差分运算,以处理非平稳时间序列。基于以上两种定理,下面主要介绍ARMA模型和ARIMA模型。

2.1、ARMA模型(自回归移动平均模型)

  同一现象在不同时间上的相继观察值排列而成的序列,这些观察值是一个个随机变量,所以时间序列是随机变量序列。通常可以分为三大类:白噪声序列平稳非白噪声序列非平稳序列

2.1.1、建模流程

在这里插入图片描述

2.1.2、模型的平稳性检验-----单位根检验

  对平稳序列建模首先需要确定序列是平稳的。平稳性检验方法有:图检验法单位根检验法(DF检验和ADF检验)
  图检验法:平稳时间序列具有常数均值和方差。这意味着平稳序列的时序图应该显示出该序列始终在一个常数值附近波动,而且波动的范围有界的特点。图检验方法主要适用于趋势或周期比较明显的序列,对于趋势或周期不太明显的序列,通过图检验方法来判断序列的平稳性具有一定的主观性。图检验法分为:时序图检验自相关图检验
  自相关图是一个平面二维坐标悬垂线图,横坐标表示延迟时期数,纵坐标表示自相关系数,悬垂线的长度表示自相关系数的大小。平稳序列通常具有短期相关性,这就是我们利用自相关图进行平稳性判别的标准,该性质用自相关系数来描述就是随着延迟阶数k的增加,平稳序列的自相关系数P会很快地衰减向零;而非平稳序列的自相关系数P衰减向零的速度通常比较慢
  单位根检验:如果序列是平稳的,那么该序列的所有特征根都应该在单位圆内。如果序列有特征根在单位圆上或单位圆外,那么该序列就是非平稳序列。

2.1.3、纯随机性(白噪声)检验-----Q统计量和LB统计量

  拿到一个观察值序列之后,首先是判断它的平稳性。通过平稳性检验,序列可以分为平稳序列和非平稳序列两大类。但并不是所有的平稳序列都值得建模,只有那些序列值之间具有密切的相关关系、历史数据对未来的发展有一定影响的序列,才值得我们花时间去挖掘历史数据中的有效信息用来预测序列未来的发展。
  如果序列值彼此之间没有任何相关性,那就意味着该序列是一个没有记忆的序列,过去的行为对将来的发展没有丝毫影响,这种序列称为纯随机序列。从统计分析的角度来说,纯随机序列是没有任何分析价值的序列。纯随机序列的性质:纯随机性(各序列值之间没有任何相关关系)和方差齐性
在这里插入图片描述
假设条件:
原假设:延迟期数小于或等于 m 期的序列值之间相互独立
备择假设:延迟期数小于或等于m 期的序列值之间有相关性
检验统计量:Q统计量LB统计量

2.1.3、模型的参数(p,q)识别-----ACF、PACF

  一个观察值序列如果被识别为平稳非白噪声序列,接下来我们将通过考察平稳序列样本自相关系数和偏自相关系数选择适合的模型拟合观察值序列。因此模型拟合的第一步是要根据观察值序列的取值求出该序列的样本自相关系数和样本偏自相关系数的值。
ARMA模型定阶的基本原则
在这里插入图片描述
截尾:落在置信区间内(95%的点都符合该规则)
(1)AR§模型
  描述当前值与历史值之间的关系,用变量自身的历史时间数据对自身进行预测。自回归模型必须满足平稳性的要求。
在这里插入图片描述
自回归模型的限制:
1、自回归模型是用自身的数据进行预测
2、必须具有平稳性
3、必须具有自相关性,如果自相关系数小于0.5,则不宜采用
4、自回归只适用预测与自身前期相关的现象
(2)MA(q)模型
  移动平均模型关注的是自回归模型中的误差项的累加,移动平均法能有效地消除预测中的随机波动
在这里插入图片描述
(3)ARMA模型
  结合了AR§和MA(q)模型的特性,用于建模平稳时间序列。具体来说,ARMA模型描述当前值与其自身历史值(自回归部分)以及过去误差项(移动平均部分)之间的关系。优势在于它能够有效捕捉时间序列中的相关性和随机性,适用平稳序列建模与预测。
在这里插入图片描述

2.1.4、参数估计

  模型识别之后,下一步就是要利用序列的观察值确定该模型的口径,即估计模型中未知参数的值。对于ARMA模型,该模型共有p+q+2个未知参数,参数μ是序列均值,通常采用矩估计方法,用样本均值估计总体均值即可得到它的估计值。原 p+q+2个待估参数减少为 p+q+1个。对于 p+q+1个未知参数的估计方法有三种:矩估计极大似然估计最小二乘估计
在这里插入图片描述

2.1.4.1、矩估计

在这里插入图片描述
  矩估计方法,尤其是低阶ARMA 模型场合下的矩估计方法具有计算量小、估计思想简单直观,且不需要假设总体分布的优点。但是在这种估计方法中只用到了p+q个样本自相关系数,即样本二阶矩的信息,观察值序列中的其他信息都被忽略了,这导致矩估计方法是一种比较粗糙的估计方法,它的估计精度一般不高,因此常被用于确定极大似然估计和最小二乘估计迭代计算的初始值。

2.1.4.2、极大似然估计

  在极大似然准则下,认为样本来自使该样本出现概率最大的总体,因此未知参数的极大似然估计就是使得似然函数(即联合密度函数)达到最大的参数值。
在这里插入图片描述
  使用极大似然估计必须已知总体的分布函数,在时间序列分析中,序列的总体分布通常是未知的。为便于分析和计算,通常假设序列服从多元正态分布。
  极大似然估计充分利用了每一个观察值所提供的信息,因而它的估计精度高,同时具有估计的一致性、渐近正态性和渐近有效性等许多优良的统计性质,是一种非常优良的参数估计方法。但它的缺点是需要事先假定序列的分布

2.1.4.3、最小二乘估计

在这里插入图片描述

2.1.5、模型检验
2.1.5.1、模型显著性检验-----残差序列白噪声检验

  模型的显著性检验主要是检验模型的有效性。一个模型是否显著有效主要看它提取的信息是否充分。一个好的拟合模型应该能够提取观察值序列中几乎所有的样本相关信息,换言之,拟合残差项中将不再蕴含任何相关信息,即残差序列应该为白噪声序列,这样的模型称为显著有效模型。反之,如果残差序列为非白噪声序列,那就意味着残差序列中还残留着相关信息未被提取,这就说明拟合模型不够有效,通常需要选择其他模型重新拟合。
  因此,模型的显著性检验即残差序列的白噪声检验,原假设和备择假设分别为:
在这里插入图片描述
检验统计量为LB(Ljung-Box):
在这里插入图片描述
  如果拒绝原假设,就说明残差序列中还残留着相关信息,拟合模型不显著。如果不能拒绝原假设,就认为拟合模型显著有效。

2.1.5.2、参数的显著性检验----T检验

  参数的显著性检验就是要检验每一个未知参数是否显著非零。这个检验的目的是使模型精简。如果某个参数不显著非零,即表示该参数所对应的那个自变量对因变量的影响不明显,该自变量就可以从拟合模型中剔除。最终模型将由一系列参数显著非零的自变量表示。
在这里插入图片描述
  检验统计量的P值小于α时,拒绝原假设,认为该参数显著非零,如果参数显著性检验不能拒绝原假设,就应该剔除不显著参数,重新拟合结构更精练的模型。

2.1.6、模型优化

  若一个拟合模型通过了检验,说明在一定的置信水平下,该模型能有效拟合观察值序列的波动,但这种有效模型并不一定是唯一的。同一个序列可以构造两个甚至更多个拟合模型,多个模型都显著有效,那么到底该选哪个模型用于统计推断呢?为了解决这个问题,引进AICBIC 信息准则的概念,进行模型优化。
(1)AIC:赤池信息准则
  该准则的指导思想是一个拟合模型的优劣可以从两方面去考察:一方面是常用来衡量拟合程度的似然函数值;另一方面是模型中未知参数的个数。通常似然函数值越大,说明模型拟合效果越好,模型中未知参数个数越多,说明模型中包含的自变量越多,自变量越多,模型变化越灵活,模型拟合的准确度就会越高。模型拟合程度高是我们所希望的,但是我们又不能单纯地以拟合精度来衡量模型的优劣,因为这样势必会导致未知参数的个数越多越好。
  未知参数越多,说明模型中自变量越多,未知的风险越多,而且参数越多,参数估计的难度就越大,估计的精度也越差,因此,一个好的拟合模型应该是一个拟合精度未知参数个数的综合最优配置。
  AIC 准则就是在这种考虑下提出的,它是拟合精度和参数个数的加权函数:
AIC=2(k:模型中未知参数个数)-2ln(L:模型的极大似然函数值),使AIC达最小的模型被认为是最优模型。
在这里插入图片描述
(2)BIC:贝叶斯信息准则
  AIC 准则为选择最优模型提供了有效的规则,但也有不足之处。对于一个观察值序列而言,序列越长,相关信息就越分散,要很充分地提取其中的有用信息,或者说要使拟合精度比较高,通常需要包含多个自变量的复杂模型。在AIC 准则中拟合误差提供的信息会因样本容量而放大,但参数个数惩罚因子样本容量没关系,它的权重始终是常数 2。因此,在样本容量趋于无穷大时,由 AIC 准则选择的模型不收敛于真实模型,它通常比真实模型所含的未知参数个数要多。
BIC=(k:模型中未知参数的个数)ln(n:样本数量)-2ln(L:模型的极大似然函数值)
  BIC 准则对 AIC准则的改进就是将未知参数个数的惩罚权重由常数2变成了样本容量的对数函数 Inn。

2.2、ARIMA(差分自回归移动平均模型)—无季节效应的非平稳序列

  Cramer分解定理说明任何一个序列的波动都可以视为同时受到确定性影响和随机性影响的作用。平稳序列要求这两方面的影响都是稳定的,而非平稳序列产生的机理就在于它所受到的这两方面的影响至少有一方面是不稳定的。Cramer 分解定理则在理论上保证了适当阶数的差分一定可以充分提取确定性信息。
  实践中,我们会根据序列的不同特点选择合适的差分方式,常见情况有以下三种:
(1)序列蕴含显著的线性趋势,1阶差分就可以实现趋势平稳。
(2)序列蕴含曲线趋势,通常低阶(2 阶或 3阶)差分就可以提取出曲线趋势的影响。
(3)蕴含固定周期的序列:对蕴含固定周期的序列进行步长为周期长度(1阶12步)的差分运算,通常可以较好地提取周期信息。

2.2.1、建模流程

在这里插入图片描述
  ARIMA主要应用于单变量同方差场合的线性模型
  ARIMA中AR是自回归,p为自回归项;MA为移动平均,q为移动平均项数,d为时间序列成为平稳时所做的差分次数

三、python案例

数据来源:通过网盘分享的文件:sunspots_data.xlsx
链接: https://pan.baidu.com/s/1DjSDOveDOId8sKxOhu-9aw 提取码: 92qx

3.1、加载数据

import numpy as np  # 导入NumPy库,用于数值计算
import pandas as pd  # 导入Pandas库,用于数据处理和分析
import statsmodels.api as sm  # 导入statsmodels库,用于统计建模
import matplotlib.pyplot as plt  # 导入Matplotlib库,用于绘图
from scipy import stats  # 导入SciPy库,用于科学计算和统计分析
from statsmodels.tsa.arima.model import ARIMA  # 导入ARIMA模型
from statsmodels.graphics.api import qqplot  # 导入QQ图绘制函数
from statsmodels.stats.diagnostic import acorr_ljungbox as lb_test  # 导入Ljung-Box检验函数
from statsmodels.tsa.stattools import adfuller  # 导入ADF单位根检验函数# 读取 Excel 文件
file_path = r'sunspots_data.xlsx'
df = pd.read_excel(file_path)
# 显示前几行数据
# print(df.head())
# 绘制折线图
plt.plot(df['SUNACTIVITY'])
plt.xlabel('Time')
plt.ylabel('SUNACTIVITY')
plt.title('SUNACTIVITY Over Time')
plt.grid(True)
plt.show()

在这里插入图片描述

3.2、平稳性检验

#单位根检验   原假设是存在单位根,数据不平稳
adfuller(df)

在这里插入图片描述

3.3、差分

# 进行一阶差分
df_diff = df.diff(periods=1).dropna()# 进行 ADF 检验
result = adfuller(df_diff)
print('ADF Statistic:', result[0])
print('p-value:', result[1])
print('Critical Values:')
for key, value in result[4].items():print(f'\t{key}: {value}')

在这里插入图片描述

3.4、白噪声检验

lb_test(df, return_df=True,lags=5)#Ljungbox检验发现数据不是白噪声序列

在这里插入图片描述

3.5、模型参数识别

(1)acf、pacf图

import matplotlib.pyplot as plt
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
# 绘制ACF图
plot_acf(df, lags=154, alpha=0.05)
plt.title('ACF')
plt.show()# 绘制PACF图
plot_pacf(df, lags=152, alpha=0.05)
plt.title('PACF')
plt.show()

在这里插入图片描述
(2)aic、bic (推荐)

import itertools
import pandas as pd
import statsmodels.api as sm# 定义参数范围
p_values = range(0, 6)  # p取值范围
q_values = range(0, 6)  # q取值范围# 初始化最佳模型参数和最小AIC、BIC
best_aic = float('inf')
best_bic = float('inf')
best_order = None# 遍历参数组合
for p, q in itertools.product(p_values, q_values):try:# 拟合ARIMA模型model = sm.tsa.ARIMA(df, order=(p, 1, q))results = model.fit()# 计算AIC和BICaic = results.aicbic = results.bic# 更新最佳参数和最小AIC、BICif aic < best_aic:best_aic = aicbest_order = (p, 1, q)if bic < best_bic:best_bic = bicprint(f'ARIMA({p}, 1, {q}) - AIC: {aic:.2f}, BIC: {bic:.2f}')except:continueprint(f'Best Model: ARIMA{best_order} - AIC: {best_aic:.2f}, BIC: {best_bic:.2f}')

在这里插入图片描述

3.6、模型拟合

arma_mod021 = ARIMA(df, order=(5, 1, 4)).fit()  # 拟合ARIMA模型到太阳黑子数据集上,指定模型阶数为(2, 0, 0),即自回归阶数为2,差分阶数为0,移动平均阶数为0,并将结果存储在arma_mod20中
print(arma_mod021.summary())

在这里插入图片描述

3.7、模型检验

(1)残差检验
残差自相关性检验
目的:检验模型的残差是否呈现白噪声,确保模型已经捕捉到数据中的主要模式。
方法:常用 Ljung-Box Q 检验 来判断残差的自相关性。
指标:Ljung-Box Q 统计量和相应的 p 值。若 p 值较大(通常大于 0.05),说明残差序列无显著自相关性,可以认为模型有效。

arma_mod021.resid.plot(figsize=(10,3)) #残差时序图

在这里插入图片描述
残差正态性检验
目的:检查残差是否符合正态分布假设。正态性是很多统计检验的前提,残差符合正态分布有助于模型的稳定性。
方法:常用 Jarque-Bera 检验。
指标:Jarque-Bera (JB) 统计量及其 p 值。若 p 值较大,残差分布近似正态;若 p 值小(通常小于 0.05),则残差不符合正态分布假设。

qqplot(arma_mod021.resid, line="q", fit=True)#QQ图检验是否服从正态分布
print(sm.stats.durbin_watson(arma_mod021.resid.values))#DW检验
lb= lb_test(arma_mod021.resid, return_df=True,lags=5)#LB检验
print(lb)
#上述检验都是为了确保残差数据是随机的,不存在趋势或周期性,残差是白噪声

在这里插入图片描述
残差异方差性检验
目的:检查残差的方差是否随时间变化。若存在异方差性,模型在不同时间段的拟合效果可能不一致。
方法:使用 Heteroskedasticity Test(异方差检验)。
指标:H 统计量和相应的 p 值。若 p 值较大(通常大于 0.05),表明残差方差一致。

残差偏度和峰度检验
目的:进一步描述残差的分布特性。
方法:通过 偏度 (Skewness) 和 峰度 (Kurtosis) 指标描述残差分布的形状。
指标:
偏度 (Skew):反映残差分布的对称性。接近 0 表示对称,正值表示右偏,负值表示左偏。
峰度 (Kurtosis):反映残差分布的尖峰程度。接近 3 表示正态分布,较大值表示重尾分布。

(2)参数的显著性检验
ar.L1 至 ar.L5: 自回归(AR)部分的5个滞后项。可以看到其中 ar.L1、ar.L2、ar.L3 和 ar.L4 的系数在统计上显著。
ma.L1 至 ma.L4: 移动平均(MA)部分的4个滞后项。同样,ma.L1、ma.L2 和 ma.L3 系数显著。
sigma2: 残差的方差,反映模型未解释部分的波动性。

3.8、模型拟合预测

# 进行预测
# 拟合ARIMA模型
model = sm.tsa.ARIMA(df, order=(5, 1, 4))
results = model.fit()
forecast_10_periods = results.predict(start=len(df)+1, end=len(df) + 9)
forecast_10_periods# 绘制原始数据和预测结果的折线图
plt.figure(figsize=(12, 6))
plt.plot(df, label='origin')
plt.plot(forecast, label='predict_data')
plt.plot(range(len(df)+1, len(df) + 10), forecast_10_periods, label='predict_data_10')
plt.xlabel('time')
plt.ylabel('SUNACTIVITY')
plt.title('origin_and_predict_and_10')
plt.legend()
plt.show()

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Java内存模型

Java内存模型 JMM即java memory model,它定义了主存、工作内存抽象概念,底层对应着CPU寄存器、缓存、硬件内存、CPU指令优化等。 JMM体现在以下几个方面 原子性 - 保证指令不受到线程上下文切换的影响(之前的synchornized原理文章有介绍过) 可见性 - 保证指令不会受CPU缓…

软考高级架构 - 8.2 - 系统架构评估 - 超详细讲解+精简总结

8.2-系统架构评估 系统架构评估就是对系统架构的质量进行分析&#xff0c;以便帮助设计者作出架构决策&#xff0c;确保系统能够符合需求。评估方法大致分为三种&#xff1a; 基于问卷或检查表&#xff1a;通过设计好的问卷或清单&#xff0c;收集开发人员和相关人员的…

【LLM】Generative Agents和代码实践

note Generative Agents是2023年斯坦福提出的agent小镇&#xff0c;通过memory->reflection->planning的框架提高NPC的行为目标性&#xff0c;给游戏NPC的灵活设计带来了可能。Generative Agents是一种多智能体交互的框架&#xff0c;它模拟现实中的人类行为。这些Agent…

K. Farm Management 【CCPC2024哈尔滨站】

K. Farm Management 思路: 很容易想到的策略&#xff1a; 给每个作物都安排最短的时长 l l l&#xff0c;剩下的时间作为可支配时间。选择删除收益最高的作物&#xff0c;然后将尽可能多的可支配时间用于这个作物。或者选择删除收益低时间还长的作物&#xff0c;然后将时间解…

智能 ODN 系统研究与设计

智能 ODN 系统研究与设计 摘 要&#xff1a;为了解决ODN面临的光纤错综复杂&#xff0c;故障定位低效等问题&#xff0c;引入电子标签&#xff0c;智能OTDR技术&#xff0c;提出了一种基于电子标签、光纤检测笔和智能OTDR故障监测的智能 ODN 解决方案,并重点讲述了智能ODN系统的…

Openlayers实现长度测量

概述 在 Openlayers 中,计算两点之间的距离,通常会用到ol/sphere模块。ol/sphere模块主要用于处理与球体(特别是地球球体)相关的数学和几何计算。而长度测量主要用到ol/sphere中的getDistance函数。 getDistance函数用于计算地球表面两点之间的距离,通常用于经纬度坐标。…

xftp连接中不成功 + sudo vim 修改sshd_config不成功的解决方法

我们使用sudo vim不成功&#xff0c;但是我们使用sudo su就可以 了&#xff01; root用户权利更大&#xff01; 喵的&#xff0c;终于成功了&#xff0c;一个xftp连接半天不成功。&#xff08;添加上面的内容就可以连接成功了↑&#xff09;

常用的c++特性-->day02

可调用对象 案例 #include <iostream> #include <string> #include <vector> using namespace std;using funcptr void(*)(int, string);int print(int a, double b) {cout << a << ", " << b << endl;return 0; } // …

应急车道占用检测算法的技术方案与应用

应急车道是高速公路上的生命通道&#xff0c;专门用于救护车、消防车、警车等紧急车辆通行&#xff0c;帮助应对突发状况。然而&#xff0c;一些驾驶员出于各种原因违规占用应急车道&#xff0c;阻碍救援车辆的正常通行&#xff0c;导致交通救援效率大幅下降&#xff0c;甚至加…

卡尔曼滤波算法Kalman filter algorithm

一、假如 状态向量服从高斯分布&#xff1a; 而且状态转移是线性的&#xff1a; 测量是状态的线性关系&#xff08;带噪声&#xff09; 初始状态的置信度也是正态分布 二、卡尔曼滤波的算法流程为 疑问&#xff1a;多测量融合&#xff0c;是不是用不同的传感器测量值去重复5…

java_继承

1.为啥用 继承? Pupil类 package com.hspedu.extend;// 小学生->模拟小学生考试的情况 public class Pupil {public String name;public int age;private double score;public void setScore(double score) {this.score score;}public void testing() {System.out.printl…

Redis 缓存击穿

目录 缓存击穿 什么是缓存击穿&#xff1f; 有哪些解决办法&#xff1f; 缓存穿透和缓存击穿有什么区别&#xff1f; 缓存雪崩 什么是缓存雪崩&#xff1f; 有哪些解决办法&#xff1f; 缓存预热如何实现&#xff1f; 缓存雪崩和缓存击穿有什么区别&#xff1f; 如何保…

【Redis的安装以及主从复制的搭建】配置Redis的哨兵模式

文章目录 一、安装Redis1、上传、解压、重命名2、安装GCC环境3、编译源码4、进行安装5、修改配置文件redis.conf 二、Redis主从复制搭建1、创建文件夹用来实现主从复制 三、配置Redis的哨兵模式1、创建文件夹2、修改sentinel.conf配置文件3、启动 一、安装Redis 1、上传、解压…

WPF中的转换器

单值转换器 1.创建项目后下载两个NuGet程序包 2.先定义一个转换器实现IValueConverter接口 using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; usin…

GEE Ui——批量查询Sentinel-2 图像无云区域的可视化应用(提供缩略图)

目录 简介 功能选项 函数 Map.clear() No arguments. Returns: ui.Map Map.onClick(callback) Arguments: Returns: String reduceRegion(reducer, geometry, scale, crs, crsTransform, bestEffort, maxPixels, tileScale) Arguments: Returns: Dictionary toLis…

汇编练习-1

1、要求 练习要求引自《汇编语言-第4版》实验10.3(P209页) -编程&#xff0c;将data段中的数据&#xff0c;以10进制的形式显示出来 data segment dw 123,12666,1,8,3,38 data ends 2、实现代码(可惜没找到csdn对8086汇编显示方式) assume cs:codedata segmentdw 16 dup(0) ;除…

xml格式转为txt格式?

数据集的标签格式为xml格式&#xff0c;转为yolo的训练格式&#xff1a; 1.创建一个格式转化的.py文件将下面代码复制&#xff1a; import os import glob import xml.etree.ElementTree as ETdef get_classes(classes_path):with open(classes_path, encodingutf-8) as f:cl…

M - Weird Ceiling 【CCPC2024哈尔滨站】

M - Weird Ceiling 思路: 注意到 f ( n , i ) f(n,i) f(n,i) 的值为 n y ( i ) \frac{n} {y(i)} y(i)n​ &#xff0c;其中 y ( i ) y(i) y(i) 为 n n n 小于等于 i i i 的最大因数。 那么先找到 n n n的所有因数&#xff0c;包括 1 1 1和它本身&#xff0c;在数组a[]中升…

机器学习与数学公式

目录 在机器学习中&#xff0c;将公式应用到算法程序上主要涉及以下几个步骤&#xff1a; 1、数学公式转换成编程逻辑&#xff1a; 2、选择合适的编程语言和工具&#xff1a; 3、使用矩阵运算和优化方法&#xff1a; 4、实现算法逻辑&#xff1a; 5、将公式封装成函数…

基于微信小程序的校园失物招领系统的研究与实现(V4.0)

博主介绍&#xff1a;✌stormjun、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…