机器学习时间序列预测

import matplotlib.pyplot as plt
import pandas as pd 
import seaborn as sns
import numpy as np
train=pd.read_csv('./train.csv',encoding='utf-8')
print(train.info())
print(train.shape)

test=pd.read_csv('./test.csv',encoding='utf-8')
print(test.info())
print(test.shape)

train.index = pd.to_datetime(train['datetime'])

data=train['count'].resample('D').mean()
print(data)

#导入数据

img

data.plot(figsize=(12,6))
plt.legend(bbox_to_anchor=(1.25,0.5))
plt.title('count')
sns.despine

img

#差分法(不平稳处理),保存成新的列,1阶差分,dropna() 删除缺失值
data_diff=data.diff().dropna()
plt.figure(figsize=(12,5))
plt.plot(data_diff)
plt.title('diff1')
plt.show()

img

acf=plot_acf(data_diff,lags=20)
plt.title("ACF")
acf.show()

img

pacf=plot_pacf(data_diff,lags=20)
plt.title("PACF")
pacf.show()

img

#ADF检验 
    x = np.array(data_diff)
    adftest = adfuller(x, autolag='AIC')
    print (adftest) 

img


#纯随机性检验(白噪声检验)
    p_value = acorr_ljungbox(data_diff, lags=1) 
    print (p_value)

img

p值小于显著水平0.05,则可以以95%的置信水平拒绝原假设


train_results = sm.tsa.arma_order_select_ic(data, ic=['aic', 'bic'], trend='n', max_ar=8, max_ma=8)
 
print('AIC', train_results.aic_min_order)
print('BIC', train_results.bic_min_order)

img


from statsmodels.graphics.tsaplots import plot_acf,plot_pacf #画图定阶
from statsmodels.tsa.arima.model import ARIMA#模型
from statsmodels.stats.stattools import durbin_watson #DW检验
from statsmodels.graphics.api import qqplot #qq图
model=ARIMA(data,order=(4,1,8))
result=model.fit()
print(result.summary())

img

pred=result.predict('20110105','20121230',dynamic=False,typ='levels')
print(pred)
plt.figure(figsize=(12,8))
plt.xticks(rotation=45)
plt.plot(pred)
plt.plot(data)

img


#残差
result.plot_diagnostics(figsize=(16,12))

img

帮忙看看模型怎么样,哪里有问题吗,第一次做,定阶检验这些

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。