【2024_CUMCM】时间序列算法ARMA

目录

2023-c-问题二

 问题分析

介绍

单位根检验

白噪声检验

自相关和偏自相关图 

利用信息准则定阶 

构建AMIMA模型

D-W检验 

预测

代码 


2023-c-问题二

 问题分析

ARMA适合多个领域的时间序列分析,不同时间的定价策略属于这类问题。

介绍

ARMA模型,全称为自回归移动平均模型(Autoregressive Integrated Moving Average Model),是一种常用于时间序列分析的统计模型。它结合了自回归模型(AR)移动平均模型(MA)的特性,能够描述时间序列数据中的自相关性和随机扰动之间的关系。ARMA模型通常表示为ARMA(p, q)形式,其中p表示自回归项的数量,q表示移动平均项的数量。

对时间序列的随机性和平稳性进行检验,根据检验的结果,可将序列分为不同的类型:

        纯随机序列(白噪声序列):序列的各项之间没有任何的相关关系,序列在进行完全无序的波动,对于这样的序列,ARMA选择放弃分析。

        平稳非白噪声序列:平稳的意思指该序列的均值和方差是常数,对于该类型的数据,我们通常建立一个线性拟合该序列的发展,比如使用ARMA。

        非平稳序列:它的均值和方差不稳定,处理方法一般是将其转化为平稳性数据,然后再使用ARMA算法。

单位根检验

用于判断时间序列是否有非平稳性

 输出:

原始序列的ADF检测结果为: (-3.5139213200446737, 0.007636680826067631, 13, 1071, {'1%': -3.436470487817901, '5%': -2.8642424166404, '10%': -2.5682088634756735}, 10564.986426036365)

p值为 0.007636680826067631<0.05,ADF值为-3.5139213200446746,同时小于1%= -3.436470487817901、5%=-2.8642424166404、10%=-2.5682088634756735即说明非常好地拒绝该假设,故为平稳序列,选择ARMA模型

白噪声检验

用于确定一个给定的数据集是否符合白噪声的特性。在实际应用中,白噪声检验可以用来评估数据的随机性,以及排除数据集中可能存在的非随机因素。

在python中,引入相关函数就可以直接判断是否为非白噪声

自相关和偏自相关图 

自相关是指一个时间序列与其自身在不同时间点的相似程度。它通常用于分析时间序列数据中的重复模式或周期性波动。

偏自相关是自相关的一种特殊形式,它考虑了时间序列中的滞后效应。偏自相关图是用来展示这种滞后效应的图形工具,观察偏自相关图,我们可以识别出时间序列中的潜在因果关系。

 这种图大多只需你会识别即可,如下图自相关图将显示出明显的峰值,数据序列中的未来值与过去值有较高的相关性。

 

利用信息准则定阶 

信息准则定阶是指使用AIC(赤池信息准则)或BIC(贝叶斯信息准则)等信息准则来确定ARMA模型的最佳阶数。帮助我们在不同的ARMA模型之间做出选择,找到那个既能很好地拟合数据,又不会过度拟合的数据。AIC和BIC都是基于模型复杂度和拟合优度的权衡。

在python中,利用statsmodels库,使用内置的方法来自动选择最佳的ARMA模型阶数。

构建AMIMA模型

上面的准则是为了得到参数order

绘制出如下诊断图(残差图、散点图、直方图、自相关图)

  • 残差图展示了模型残差与时间的关系。理想情况下,残差应该是随机噪声,不显示出任何明显的模式或趋势。

D-W检验 

D-W检验(Durbin-Watson检验),用于检测时间序列数据中自相关的统计测试。它主要用于检查模型残差是否存在自相关性。

D-W检验的值范围在0到4之间,接近2表示没有自相关,小于2表示正自相关,大于2表示负自相关。D-W检验的值越远离2,表明自相关性越强。

在Python中,可以使用statsmodels库来进行Durbin-Watson检验。

预测

主要关注p值和置信区间 

代码 

# %% [markdown]
# 考虑商超以品类为单位做补货计划,请分析各蔬菜品类的销售总量与成本加成
# 定价的关系,并给出各蔬菜品类未来一周(2023 年 7 月 1-7 日)的日补货总量和定价策略,
# 使得商超收益最大。# %%
import numpy as np
import pandas as pd
import datetime
import seaborn as sns
from scipy import stats
import matplotlib.pyplot as plt
from sklearn import preprocessing
from sklearn.model_selection import KFold
from statsmodels.graphics.tsaplots import acf,pacf,plot_acf, plot_pacf
from statsmodels.tsa.stattools import adfuller as ADF
from sklearn.metrics import mean_squared_error
import sys
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False# %%
Category = pd.read_excel(r"D:\jianmo\2023年数学建模C\2023年数学建模C\附件1.xlsx")
Category# %%
loss = pd.read_excel(r"D:\jianmo\2023年数学建模C\2023年数学建模C\附件2.xlsx")
loss# %%
price = pd.read_excel(r"D:\jianmo\2023年数学建模C\2023年数学建模C\附件3.xlsx")
price# %%
merge_data=pd.merge(price, loss, on="单品编码", how="left")
merge_data# %%
category_sales = pd.read_excel(r"C:\Users\Administrator\Desktop\程序\data\save2.xlsx")
category_sales# %%
# Group by date and category and sum the sales volume
daily_sales = category_sales.groupby(['销售日期', '分类名称'])['销量(千克)'].sum().reset_index()
daily_sales# %%
daily_sales.info()# %% [markdown]
# daily_sales=daily_sales.set_index('销售日期')
# daily_sales# %%
plt.figure(figsize=(10, 5))
for category in daily_sales['分类名称'].unique():subset = daily_sales[daily_sales['分类名称'] == category]plt.plot(subset['销售日期'], subset['销量(千克)'], label=category)
plt.title('按时间分类的销售量趋势')
plt.xlabel('时间')
plt.ylabel('销量 (kg)')
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()# %%
lj=daily_sales[daily_sales['分类名称'] == '辣椒类']
hy=daily_sales[daily_sales['分类名称'] == '花叶类']
hc=daily_sales[daily_sales['分类名称'] == '花菜类']
qz=daily_sales[daily_sales['分类名称'] == '茄类']
syj=daily_sales[daily_sales['分类名称'] == '食用菌']
ss=daily_sales[daily_sales['分类名称'] == '水生根茎类']# %% [markdown]
# # 辣椒类预测# %%
lj=lj.set_index('销售日期')
lj# %%
#进行单位根检验
print('原始序列的ADF检测结果为:',ADF(lj['销量(千克)']))
#返回值依次为:adf,pvalue,usedleg,nobs,critrical value,icbest,regresults,resstore# %% [markdown]
# pvalue= 0.007636680826067594< 0.5,ADF Test result=-3.5139213200446746,同时小于1%= -3.436470487817901、5%=-2.8642424166404、10%=-2.5682088634756735即说明非常好地拒绝该假设,故为平稳序列,选择ARMA模型# %%
#白噪声数据没有分析价值,所以要进行白噪声检验
from statsmodels.stats.diagnostic import acorr_ljungbox as lb_test
p= lb_test(lj['销量(千克)']).iloc[0,1]
if p<0.05:print(u'原始序列为非白噪声序列')
else:print(u'原始序列为白噪声序列')# %%
#绘制自相关、偏自相关图
plt.figure(figsize=(10,5))
plot_acf(lj['销量(千克)'])
plot_pacf(lj['销量(千克)'])
plt.show()# %% [markdown]
# 两个都是拖尾,选择ARMA模型# %%
import statsmodels.api as sm
def detetminante_order_AIC(timeseries): #信息准则定阶:AIC、BIC、HQIC#AICAIC = sm.tsa.arma_order_select_ic(timeseries,\max_ar=6,max_ma=4,ic='aic')['aic_min_order']#BICBIC = sm.tsa.arma_order_select_ic(timeseries,max_ar=6,\max_ma=4,ic='bic')['bic_min_order']#HQICHQIC = sm.tsa.arma_order_select_ic(timeseries,max_ar=6,\max_ma=4,ic='hqic')['hqic_min_order']print('the AIC is{},\nthe BIC is{}\n the HQIC is{}'.format(AIC,BIC,HQIC))# %%
lj# %%
lj_train_size = 1078
lj_test_size = len(lj) - lj_train_size
lj_train,lj_test = lj[0:lj_train_size], lj[lj_train_size:len(lj)]
lj_train# %%
trend_evaluate = sm.tsa.arma_order_select_ic(lj_train['销量(千克)'], ic=['aic', 'bic'], trend='n', max_ar=20,max_ma=5)
print('train AIC', trend_evaluate.aic_min_order)
print('train BIC', trend_evaluate.bic_min_order)# %%
detetminante_order_AIC(lj['销量(千克)'])# %%
from statsmodels.tsa.arima.model import ARIMA #ARIMA模型
model=ARIMA(lj_train['销量(千克)'],order=(4,0,3)) #建立ARIMA(8,0)模型
model_fit=model.fit()
model_fit.plot_diagnostics(figsize=(12,8))# %%
# D-W检验# DW趋近2,P=0,不存在自相关性
print(sm.stats.durbin_watson(model_fit.resid.values))# %%
resid=model_fit.resid
fig=plt.figure(figsize=(16,12))
ax1=fig.add_subplot(211)
sm.graphics.tsa.plot_acf(resid,lags=15,ax=ax1)  #自相关系数ax2=fig.add_subplot(212)
sm.graphics.tsa.plot_pacf(resid,lags=15,ax=ax2)  #偏相关系数# %%
acf,q,p=sm.tsa.acf(resid.values.squeeze(),nlags=20,qstat=True)
data=np.c_[range(1,21),acf[1:],q,p]
table=pd.DataFrame(data,columns=["lag","AC","Q","P-value"])
print(table.set_index("lag"))# %%
fc= model_fit.forecast(7)  # 95% conf
fc# %%
print('模型报告为:\n',model_fit.summary())# %%
fc_series = pd.DataFrame(fc, index=lj_test.index)
fc_series# %%
forcast=pd.DataFrame(fc)
forcast# %%
dates = pd.date_range('2023-06-24',periods=7)# %%
forcast.index=dates
forcast# %%
plt.figure(figsize=(10,5), dpi=100)
plt.plot(lj_train['销量(千克)'], label='training')
plt.plot(lj_test['销量(千克)'], label='actual')
plt.plot(forcast , label='forecast')
plt.title('Forecast vs Actuals')
plt.xlabel('时间')
plt.ylabel('销量 (kg)')
plt.legend(loc='upper left', fontsize=8)
plt.show()# %%
lj_model=ARIMA(lj['销量(千克)'],order=(4,0,3)) #建立ARIMA(8,0)模型
lj_model_fit=lj_model.fit()
pre_lj=lj_model_fit.forecast(7)
pre_lj# %%
forcast_lj=pd.DataFrame(pre_lj)
dateslj = pd.date_range('2023-07-01',periods=7)
forcast_lj.index=dateslj
forcast_lj# %%
plt.figure(figsize=(10,5), dpi=100)
plt.plot(lj['销量(千克)'], label='actual')
plt.plot(forcast_lj , label='forecast')
plt.title('Forecast vs Actuals')
plt.legend(loc='upper left', fontsize=8)
plt.show()# %% [markdown]
# # 花叶类预测# %%
from statsmodels.tsa.stattools import adfuller #ADF检验
def ADF_test(timeseries): ## 用于检测序列是否平稳x = np.array(timeseries['销量(千克)'])adftest = adfuller(x, autolag='AIC')#print (adftest) if adftest[0] < adftest[4]["1%"] and adftest[1] < 10**(-8): # 对比Adf结果和10%的时的假设检验 以及 P-value是否非常接近0(越小越好)print("序列平稳")return True else:print("非平稳序列")return False# %%
ADF_test(hy)# %%
hy=hy.set_index('销售日期')
#进行单位根检验
print('原始序列的ADF检测结果为:',ADF(hy['销量(千克)']))
#返回值依次为:adf,pvalue,usedleg,nobs,critrical value,icbest,regresults,resstore# %% [markdown]
# 非平稳时间序列,故选择ARIMA模型# %%
## 做差分,检查平稳性
def diff(timeseries):time_diff1=timeseries.diff(1).fillna(0) #1阶差分time_diff2=time_diff1.diff(1).fillna(0) #2阶差分time_adf=ADF(timeseries)time_diff1_adf=ADF(time_diff1)time_diff2_adf=ADF(time_diff2)fig = plt.figure(figsize=(10, 5))ax1 = fig.add_subplot(111)time_diff1.plot(ax=ax1)plt.title('一阶差分图')return [time_diff1_adf,time_diff2_adf]diff(hy['销量(千克)'])# %%
def autocorr(time_series,lags):fig=plt.figure(figsize=(12,8))ax1=fig.add_subplot(211)sm.graphics.tsa.plot_acf(time_series,lags=lags,ax=ax1)ax2=fig.add_subplot(212)sm.graphics.tsa.plot_pacf(time_series,lags=lags,ax=ax2)plt.show()hy_diff1=hy['销量(千克)'].diff(1).fillna(0) 
#hy_diff2=hy_diff1.diff(1).fillna(0) 
autocorr(hy_diff1,30) # %% [markdown]
# 选择d=1# %%
train_size_hy=len(hy)-7
train_hy,test_hy = hy[0:train_size_hy], lj[train_size_hy:len(hy)]# %%
detetminante_order_AIC(train_hy['销量(千克)'])# %%
arma_64=sm.tsa.SARIMAX(train_hy['销量(千克)'],order=(6,1,4)).fit()
print("arma_64",arma_64.aic,arma_64.bic,arma_64.hqic)arma_34=sm.tsa.SARIMAX(train_hy['销量(千克)'],order=(3,1,4)).fit()
print("arma_34",arma_34.aic,arma_34.bic,arma_34.hqic)# %%
def Arima(train,test,order):model=ARIMA(train['销量(千克)'],order=order) #建立ARIMA(8,0)模型model_fit=model.fit()fc= model_fit.forecast(7, alpha=0.05)  # 95% confprint('模型报告为:\n',model_fit.summary())fc_series = pd.DataFrame(fc, index=test.index)forcast=pd.DataFrame(fc)dates = pd.date_range('2023-06-24',periods=7)forcast.index=datesplt.figure(figsize=(10,5), dpi=100)plt.plot(train['销量(千克)'], label='training')plt.plot(test['销量(千克)'], label='actual')plt.plot(forcast , label='forecast')plt.title('Forecast vs Actuals')plt.legend(loc='upper left')plt.show()R_squared = 1- (mean_squared_error(test['销量(千克)'],forcast)/ np.var(test))return model_fit,forcast,R_squared# %%
forcast_hy,R=Arima(train_hy,test_hy,order=(6,1,4))
print(R)# %%
arma_64.plot_diagnostics(figsize=(10,8))# %%
# D-W检验# DW趋近2,P=0,不存在自相关性
print(sm.stats.durbin_watson(arma_64.resid.values))# %%
resid_hy=arma_64.resid
fig=plt.figure(figsize=(16,12))
ax1=fig.add_subplot(211)
sm.graphics.tsa.plot_acf(resid_hy,lags=15,ax=ax1)  #自相关系数ax2=fig.add_subplot(212)
sm.graphics.tsa.plot_pacf(resid_hy,lags=15,ax=ax2)  #偏相关系数# %%
from statsmodels.tsa.arima.model import ARIMA #ARIMA模型
model_hy=ARIMA(hy['销量(千克)'],order=(6,1,4)) #建立ARIMA(8,0)模型
model_fit_hy=model_hy.fit()
fc_hy= model_fit_hy.forecast(7, alpha=0.05)  # 95% conf
print(fc_hy)
print('模型报告为:\n',model_fit_hy.summary())# %%
forcast_hy=pd.DataFrame(fc_hy)
dates_hy = pd.date_range('2023-07-01',periods=7)
forcast_hy.index=dates_hy
forcast_hy# %%
def Pre(data,pre_data):plt.figure(figsize=(10,5), dpi=100)plt.plot(data['销量(千克)'], label='actual')plt.plot(pre_data , label='forecast')plt.title('Forecast vs Actuals')plt.legend(loc='upper left', fontsize=8)plt.show()# %%
Pre(hy,forcast_hy)# %% [markdown]
# # 花菜类预测# %%
hc# %%
plt.figure(figsize=(20, 10))
plt.plot(hc.index,hc['销量(千克)'])
plt.title('花菜类销售量趋势')
plt.xlabel('时间')
plt.ylabel('销量 (kg)')# %%
#平稳性检验
ADF_test(hc)# %%
hc=hc.set_index('销售日期')
#进行单位根检验
print('原始序列的ADF检测结果为:',ADF(hc['销量(千克)']))
#返回值依次为:adf,pvalue,usedleg,nobs,critrical value,icbest,regresults,resstore# %%
diff(hc['销量(千克)'])# %%
train_size2 = len(hc)-7
test_size2 = len(hc) - train_size2
train2,test2 = hc[0:train_size2], hc[train_size2:len(hc)]# %%# %%
detetminante_order_AIC(train2['销量(千克)'])# %%
model_hc,forcast_hc,R=Arima(train2,test2,order=(3,1,4))# %%
model_hc.plot_diagnostics(figsize=(12,8))# %%
forecasthc2=pd.DataFrame(forecasthc1)
dates1 = pd.date_range('2023-07-01',periods=7)
forecasthc2.index=dates1
forecasthc2# %%
Pre(hc,forecasthc2)# %% [markdown]
# # 茄类预测# %%
qz# %%
ADF_test(qz)# %%
qz=qz.set_index('销售日期')
#进行单位根检验
print('原始序列的ADF检测结果为:',ADF(qz['销量(千克)']))
#返回值依次为:adf,pvalue,usedleg,nobs,critrical value,icbest,regresults,resstore# %% [markdown]
# 平稳时间序列,使用ARMA模型# %%
p= lb_test(qz['销量(千克)']).iloc[0,1]
if p<0.05:print(u'原始序列为非白噪声序列')
else:print(u'原始序列为白噪声序列')# %%
#绘制自相关、偏自相关图
plt.figure(figsize=(20,5))
plot_acf(qz['销量(千克)'])
plot_pacf(qz['销量(千克)'])
plt.show()# %%
train_size3 = len(qz) -7
test_size3 = len(qz) - train_size3
train3,test3 = qz[0:train_size3], qz[train_size3:len(qz)]# %%
train3# %%
detetminante_order_AIC(train3['销量(千克)'])# %%
model4=ARIMA(train3['销量(千克)'],order=(4,0,4)) #建立ARIMA(8,0)模型
model_fit4=model4.fit()
forcastqz= model_fit4.forecast(7, alpha=0.05)  # 95% conf
print('模型报告为:\n',model_fit4.summary())# %%
forcastqz# %%
forcastqz=pd.DataFrame(forcastqz)
dates = pd.date_range('2023-06-24',periods=7)
forcastqz.index=dates
forcastqz# %%
plt.figure(figsize=(10,5), dpi=100)
plt.plot(train3.index,train3['销量(千克)'], label='training')
plt.plot(test3.index,test3['销量(千克)'], label='actual')
plt.plot(forcastqz, label='forecast')
plt.title('Forecast vs Actuals')
plt.legend(loc='upper left', fontsize=8)
plt.show()# %%
from statsmodels.tsa.arima.model import ARIMA #ARIMA模型
modelqz=ARIMA(qz['销量(千克)'],order=(4,0,4)) #建立ARIMA(8,0)模型
model_fitqz=modelqz.fit()
forecastqz1= model_fitqz.forecast(7, alpha=0.05)  # 95% conf
print(forecastqz1)
print('模型报告为:\n',model_fitqz.summary())# %%
forecastqz2=pd.DataFrame(forecastqz1)
dates1 = pd.date_range('2023-07-01',periods=7)
forecastqz2.index=dates1
forecastqz2# %%
plt.figure(figsize=(10,5), dpi=100)
plt.plot(qz['销售日期'],qz['销量(千克)'], label='actual')
plt.plot(forecastqz2.index,forecastqz2 , label='forecast')
plt.title('Forecast vs Actuals')
plt.legend(loc='upper left', fontsize=8)
plt.show()# %% [markdown]
# # 食用菌预测# %%
syj# %%
#ADF_test(syj)
#syj=syj.set_index('销售日期')
#进行单位根检验
print('原始序列的ADF检测结果为:',ADF(syj['销量(千克)']))
#返回值依次为:adf,pvalue,usedleg,nobs,critrical value,icbest,regresults,resstore# %% [markdown]
# 平稳,用ARMA模型# %%
detetminante_order_AIC(syj['销量(千克)'])# %%
train_size4 = len(syj) -7
test_size4= len(syj) - train_size4
train4,test4 = syj[0:train_size4], syj[train_size4:len(syj)]
test4# %%
model5=ARIMA(train4['销量(千克)'],order=(3,0,3)) #建立ARIMA(8,0)模型
model_fit5=model5.fit()
forcastsyj= model_fit5.forecast(7, alpha=0.05)  # 95% conf
print('模型报告为:\n',model_fit5.summary())# %%
forcastsyj# %%
forcastsyj=pd.DataFrame(forcastsyj)
dates = pd.date_range('2023-06-24',periods=7)
forcastsyj.index=dates
plt.figure(figsize=(10,5), dpi=100)
plt.plot(train4['销量(千克)'], label='training')
plt.plot(test4['销量(千克)'], label='actual')
plt.plot(forcastsyj , label='forecast')
plt.title('Forecast vs Actuals')
plt.legend(loc='upper left', fontsize=8)
plt.show()# %%
from statsmodels.tsa.arima.model import ARIMA #ARIMA模型
modelsyj=ARIMA(syj['销量(千克)'],order=(3,0,3)) #建立ARIMA(8,0)模型
model_fitsyj=modelsyj.fit()
forecastsyj1= model_fitsyj.forecast(7, alpha=0.05)  # 95% conf
print(forecastsyj1)
print('模型报告为:\n',model_fitsyj.summary())# %%
forecastsyj2=pd.DataFrame(forecastsyj1)
dates1 = pd.date_range('2023-07-01',periods=7)
forecastsyj2.index=dates1
print(forecastsyj2)
Pre(syj,forecastsyj2)# %%
ss# %%
ADF_test(ss)
ss=ss.set_index('销售日期')
#进行单位根检验
print('原始序列的ADF检测结果为:',ADF(ss['销量(千克)']))
#返回值依次为:adf,pvalue,usedleg,nobs,critrical value,icbest,regresults,resstore# %%
#一阶差分
fig = plt.figure(figsize=(12, 8))
ax1 = fig.add_subplot(111)
diffss1 = ss['销量(千克)'].diff(1)
diffss1.plot(ax=ax1)# %%
detetminante_order_AIC(ss['销量(千克)'])# %%
train_size5 = len(ss) -7
test_size5= len(ss) - train_size5
train5,test5 = ss[0:train_size5], ss[train_size5:len(ss)]
model6=ARIMA(train5['销量(千克)'],order=(5,1,3)) #建立ARIMA(8,0)模型
model_fit6=model6.fit()
forcastss= model_fit6.forecast(7, alpha=0.05)  # 95% conf
print('模型报告为:\n',model_fit6.summary())# %%
forcastss=pd.DataFrame(forcastss)
dates = pd.date_range('2023-06-25',periods=7)
forcastss.index=dates
plt.figure(figsize=(10,5), dpi=100)
plt.plot(train5['销量(千克)'], label='training')
plt.plot(test5['销量(千克)'], label='actual')
plt.plot(forcastss , label='forecast')
plt.title('Forecast vs Actuals')
plt.legend(loc='upper left', fontsize=8)
plt.show()# %%
from statsmodels.tsa.arima.model import ARIMA #ARIMA模型
modelss=ARIMA(ss['销量(千克)'],order=(5,1,3)) #建立ARIMA(8,0)模型
model_fitss=modelss.fit()
forecastss1= model_fitss.forecast(7, alpha=0.05)  # 95% conf
print(forecastss1)
print('模型报告为:\n',model_fitss.summary())# %%
forecastss2=pd.DataFrame(forecastss1)
dates1 = pd.date_range('2023-07-01',periods=7)
forecastss2.index=dates1
print(forecastss2)
Pre(syj,forecastss2)# %%
plt.figure(figsize=(10,5), dpi=100)
plt.plot(forcast_lj,label='辣椒类')
plt.plot(forcast_hy,label='花叶类')
plt.plot(forecasthc2,label='花菜类')
plt.plot(forecastqz2,label='茄类')
plt.plot(forecastsyj2,label='食用菌')
plt.plot(forecastss2,label='水生根茎类')
plt.xlabel('销售时间')
plt.ylabel('销量(千克)')
plt.title('6种蔬菜品类未来七天的预测值')
plt.legend(loc='upper left', fontsize=8)
plt.show()# %%
del lj['分类名称']
del hy['分类名称']
del hc['分类名称']
del qz['分类名称']
del syj['分类名称']
del ss['分类名称']# %%
forcast_lj.rename(columns={'predicted_mean':'销量(千克)'},inplace=True)
forcast_hy.rename(columns={'predicted_mean':'销量(千克)'},inplace=True)
forecasthc2.rename(columns={'predicted_mean':'销量(千克)'},inplace=True)
forecastqz2.rename(columns={'predicted_mean':'销量(千克)'},inplace=True)
forecastsyj2.rename(columns={'predicted_mean':'销量(千克)'},inplace=True)
forecastss2.rename(columns={'predicted_mean':'销量(千克)'},inplace=True)# %%
ljc=['辣椒类']*7
hyc=['花叶类']*7
hcc=['花菜类']*7
qzc=['茄类']*7
syjc=['食用菌']*7
ssc=['水生根茎类']*7# %%
forcast_lj['分类名称']=ljc
forcast_hy['分类名称']=hyc
forecasthc2['分类名称']=hcc
forecastqz2['分类名称']=qzc
forecastsyj2['分类名称']=syjc
forecastss2['分类名称']=ssc# %%
sales_predict= pd.concat([forcast_lj,forcast_hy,forecasthc2,forecastqz2,forecastsyj2,forecastss2])# %%
sales_predict# %%
sales_predict.to_csv(r"C:\Users\Administrator\Desktop\程序\data\各品类未来一周销量的ARIMA预测.csv", index=True)# %%

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++入门7——string类详解

目录 1.什么是string类&#xff1f; 2.string类对象的常见构造 2.1 string(); 2.2 string (const char* s); 2.3 string (const string& str); 2.4 string (const string& str, size_t pos, size_t len npos); 2.5 string (const char* s, size_t n); 2.7 验证…

【机器学习】基于线性回归的医疗费用预测模型

文章目录 一、线性回归定义和工作原理假设表示 二、导入库和数据集矩阵表示可视化 三、成本函数向量的内积 四、正态方程五、探索性数据分析描述性统计检查缺失值数据分布图相关性热图保险费用分布保险费用与性别和吸烟情况的关系保险费用与子女数量的关系保险费用与地区和性别…

GDP播放器 驱动视频播放器 PHP 系统源码 v4.4.3

最重要的是我们自己开发了源代码&#xff0c;因此无论您在使用此工具时遇到什么问题&#xff0c;我们都会快速解决。这个版本演示 分别支持PHP7.4/8.1/8.2三个版本 演示地址

轻松驾驭开发之旅:Maven配置阿里云CodeUp远程私有仓库全攻略

文章目录 引言一、为什么选择阿里云CodeUp作为远程私有仓库&#xff1f;二、Maven配置阿里云CodeUp远程私有仓库的步骤准备工作配置Maven的settings.xml文件配置项目的pom.xml文件验证配置是否成功 三、使用阿里云CodeUp远程私有仓库的注意事项 引言 在软件开发的世界里&#…

CosyVoice - 阿里最新开源语音克隆、文本转语音项目 支持情感控制及粤语 本地一键整合包下载

近日&#xff0c;阿里通义实验室发布开源语音大模型项目FunAudioLLM&#xff0c;而且一次包含两个模型&#xff1a;SenseVoice和CosyVoice。 CosyVoice专注自然语音生成&#xff0c;支持多语言、音色和情感控制&#xff0c;支持中英日粤韩5种语言的生成&#xff0c;效果显著优于…

分子AI预测赛Task4笔记(结束)

话不多说&#xff0c;直接上官方链接&#xff1a;‌​​​‍&#xfeff;​⁠​‌​‍​​&#xfeff;​‌​⁠‬​&#xfeff;‬​​‌​​​​‬‬​​​​‍⁠‍‌​&#xfeff;⁠Task3&#xff1a;进阶baseline详解 - 飞书云文档 (feishu.cn)Task4&#xff1a;持续尝试&…

C++左值右值

在C中&#xff0c;左值&#xff08;lvalue&#xff09;和右值&#xff08;rvalue&#xff09;是表达式分类的关键概念&#xff0c;它们主要影响表达式的赋值、函数调用以及操作符的使用方式。这些概念在C11及以后的版本中变得更加重要&#xff0c;因为引入了移动语义和右值引用…

妈妈带女儿美在心里

在这个充满温情与惊喜的午后&#xff0c;阳光温柔地洒落在每一个角落&#xff0c;仿佛连空气弥漫着幸福的味道。就在这样一个平凡的时刻&#xff0c;一段关于爱与成长的温馨画面&#xff0c;悄然在网络上绽放&#xff0c;引爆了无数人的心弦——#奚梦瑶2岁女儿身高#&#xff0c…

【Linux进程】命令行参数 环境变量(详解)

目录 前言 1. 命令行参数 什么是命令行参数? 2. 环境变量 常见的环境变量 如何修改环境变量? 获取环境变量 环境变量的组织方式 拓展问题 导入环境变量 3. 本地变量* 总结 前言 在使用Linux指令的时候, 都是指令后边根命令行参数, 每个指令本质都是一个一个的可执行程…

【UE5.1 角色练习】13-枪械射击——拿出与收起武器

目录 效果 步骤 一、安装射击武器 二、拿武器和收武器 效果 步骤 一、安装射击武器 1. 在虚幻商城中将“FPS Weapon Bundle”添加到工程中&#xff0c;由于我们使用的是5.1版本&#xff0c;我们可以先将该资产放入UE4工程中&#xff0c;然后迁移到5.1版本的工程 2. 打开角…

一.2.(4)放大电路静态工作点的稳定;(未完待续)

1.Rb对Q点及Au的影响 输入特性曲线&#xff1a;Rb减少&#xff0c;IBQ&#xff0c;UBEQ增大 输出特性曲线&#xff1a;ICQ增大&#xff0c;UCEQ减少 AUUO/Ui分子减少&#xff0c;分母增大&#xff0c;但由于分子带负号&#xff0c;所以|Au|减少 2.Rc对Q点及Au的影响 输入特性曲…

【JavaSE复习】数据结构、集合

JavaSE 复习 1.数据结构1.1 查找1.1.1 基本查找1.1.2 二分查找1.1.3 插值查找1.1.4 斐波那契查找1.1.5 分块查找1.1.6 分块查找的扩展&#xff08;无规律数据&#xff09; 1.2 排序1.2.1 冒泡排序1.2.2 选择排序1.2.3 插入排序1.2.4 快速排序 2. 集合2.1 基础集合2.1.1 集合和数…

爱了!8款超好用的PC端办公软件!

AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/ 你电脑中用的最久的软件是哪些&#xff1f;以下是否有你曾经使用过的软件呢&#xff1f;工欲善其事&#xff0c;必先利其器&#xff0c;今天继续…

无人机便携式侦测干扰设备(定全向)技术详解

无人机便携式侦测干扰设备&#xff08;定全向&#xff09;是一种专门针对无人机进行侦测和干扰的设备。它具备定向和全向两种工作模式&#xff0c;能够覆盖较宽的频率范围&#xff0c;有效侦测并干扰无人机与遥控器之间的通信信号&#xff0c;从而达到控制或驱离无人机的目的。…

验证回文串-string题目

用双指针&#xff0c;left right从两头往中间对比&#xff0c;不是字母的都略过&#xff0c;比的时候化成小写字母 125. 验证回文串 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:bool isPalindrome(string s) {if(s.size() < 1)return true;int left …

论文复现-基于决策树算法构建银行贷款审批预测模型(金融风控场景)

作者Toby&#xff0c;来源公众号&#xff1a;Python风控模型&#xff0c;基于决策树算法构建银行贷款审批预测模型 目录 1.金融风控论文复现 2.项目背景介绍 3.决策树介绍 4.数据集介绍 5.合规风险提醒 6.技术工具 7.实验过程 7.1导入数据 7.2数据预处理 7.3数据可…

SpringBoot3+Vue3开发园区管理系统

介绍 在当今快速发展的城市化进程中&#xff0c;高效、智能的园区管理成为了提升居民生活品质、优化企业运营环境的关键。为此&#xff0c;我们精心打造了全方位、一体化的园区综合管理系统&#xff0c;该系统深度融合了园区管理、楼栋管理、楼层管理、房间管理以及车位管理等…

鸿蒙开发:Universal Keystore Kit(密钥管理服务)【明文导入密钥(ArkTS)】

明文导入密钥(ArkTS) 分别以导入AES256与RSA2048密钥为例&#xff0c;具体的场景介绍及支持的算法规格 开发步骤 指定密钥别名keyAlias。 密钥别名的最大长度为64字节。 封装密钥属性集和密钥材料。 密钥属性集同样与密钥生成中指定的密钥属性一致&#xff0c;须包含[HuksKe…

昇思MindSpore学习总结十——ResNet50迁移学习

1、迁移学习 &#xff08;抄自CS231n Convolutional Neural Networks for Visual Recognition&#xff09; 在实践中&#xff0c;很少有人从头开始训练整个卷积网络&#xff08;使用随机初始化&#xff09;&#xff0c;因为拥有足够大小的数据集相对罕见。相反&#xff0c;通常…

【机器学习】机器学习与时间序列分析的融合应用与性能优化新探索

文章目录 引言第一章&#xff1a;机器学习在时间序列分析中的应用1.1 数据预处理1.1.1 数据清洗1.1.2 数据归一化1.1.3 数据增强 1.2 模型选择1.2.1 自回归模型1.2.2 移动平均模型1.2.3 长短期记忆网络1.2.4 卷积神经网络 1.3 模型训练1.3.1 梯度下降1.3.2 随机梯度下降1.3.3 A…