Recuerde la predicción autorregresiva del algoritmo de series de tiempo: AR y Autoreg

fondo

Recientemente, la empresa hizo algunas predicciones de datos para los clientes, pero los clientes no sabían cuáles eran más adecuados para ellos, por lo que después de comunicarse con el lado comercial, se centraron en dos aspectos de los datos.

1. Datos de ingeniería: es una buena idea evaluar los datos de ingeniería y luego hacer advertencias tempranas, pero debido a que los datos en esta área están incompletos y hay algunas desviaciones en la precisión de los datos, nos rendimos.

2. Datos financieros: los datos financieros son una muy buena dirección. En primer lugar, los datos financieros son muy precisos y la regularidad es relativamente obvia.

Así que finalmente elegí la perspectiva del análisis de datos financieros.

Nota: Todos los datos de este artículo son datos virtuales. Los datos financieros mencionados anteriormente son solo para explicar cómo analizar esta dirección comercial.

Introducción

Con base en lo anterior, probablemente hablaré sobre la dirección de esta predicción:

Dado que el blogger se dedica principalmente a Java y Spark (Scala), usa relativamente poco Python. Si hay algún error en el proceso, critíquelo y corríjalo. Presentaremos a los desarrolladores novatos que son nuevos en la industria cómo usar Python para implementar modelos de predicción AR (autorregresivos). El modelo AR es un modelo comúnmente utilizado en el pronóstico de series temporales que predice valores futuros basándose en observaciones pasadas .

Seguiremos los pasos a continuación.

paso describir
1 Importar bibliotecas requeridas
2 Cargar datos de series de tiempo
3 Divida el conjunto de datos en conjunto de entrenamiento y conjunto de prueba
4 Entrenar modelo AR
5 Predecir valores futuros utilizando modelos AR
6 Evaluar el rendimiento del modelo
7 Visualizar resultados de predicción

Código:

Importar bibliotecas requeridas

Primero, necesitamos importar algunas bibliotecas necesarias, incluidos pandas para el procesamiento de datos y statsmodels para construir modelos AR.

from statsmodels.tsa.ar_model import AR

import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
from pandas import Series,DataFrame

Cargar datos de series de tiempo

def data_process():
    #接受csv格式数据,根据情况修改为自己的地址
    df = pd.read_csv(r"C:\Users\123\Downloads\funsbymonth.csv")

    fans = df['fans'].values
    data=pd.Series(fans)

    df['date'] = pd.to_datetime(df['date'])
    data_index = df['date'].values
    data.index =pd.Index(data_index)

    #data.plot(figsize=(12,8))
    #plt.show()

    return data,fans

#数据处理
data,fans = data_process()

He encapsulado un método para esto, solo como referencia.

También proporciono los datos para que todos los aprendan y utilicen. Puedes recogerlos si los necesitas.

date,fans
2021-6-30,12
2021-7-31,52
2021-8-31,58
2021-9-30,82
2021-10-31,65
2021-11-30,66
2021-12-31,16
2022-1-31,23
2022-2-28,54
2022-3-31,61
2022-4-30,78
2022-5-31,64
2022-6-30,56
2022-7-31,18
2022-8-31,16
2022-9-30,60
2022-10-31,75
2022-11-30,90
2022-12-31,63
2023-1-31,69
2023-2-28,15
2023-3-31,10
2023-4-30,60
2023-5-31,62
2023-6-30,78
2023-7-31,71

 Dividir el conjunto de datos

Antes de construir el modelo AR, debemos dividir el conjunto de datos en un conjunto de entrenamiento y un conjunto de prueba. Generalmente, utilizamos la mayoría de los datos para entrenar el modelo y una pequeña parte de los datos para probar el efecto de predicción del modelo. Aquí asumimos que el primer 80% de los datos se usa para entrenamiento y el último 20% de los datos se usa para pruebas.

train_data = data.iloc[:int(0.8*len(data))]
test_data = data.iloc[int(0.8*len(data)):]

Entrene el modelo AR y prediga

A continuación, podemos utilizar los datos del conjunto de entrenamiento para entrenar el modelo AR. Aquí, utilizamos la biblioteca statsmodels para construir modelos AR.

def model_fit3(data,start,end,starTime):
    ar = AR(data).fit()
    arpredict_y3 =ar.predict(start=start, end=end ,dynamic = False)
    fig, ax = plt.subplots(figsize=(12, 8))
    ax = data.ix[starTime:].plot(ax=ax)
    arpredict_y3.plot(ax=ax)
    plt.show()
    return arpredict_y3

start = 10
end = len(fans)+3
starTime = '2022-1-31'
arpredict_y = model_fit3(data,start,end,starTime)

Visualizar resultados

https://blog.51cto.com/u_16175449/6933670

https://blog.51cto.com/u_16175427/6815175

https://bbs.csdn.net/topics/392418314

https://blog.csdn.net/weixin_44034053/article/details/94359052

https://blog.51cto.com/u_13389043/6230021

https://blog.51cto.com/u_13389043/6230021

Aquí proporciono un modelo: modelo autorregresivo AutoReg

Mire el código, el conjunto de datos sigue siendo el conjunto de datos anterior

import pandas as pd
from statsmodels.tsa.ar_model import AutoReg
import matplotlib.pyplot as plt

def data_process():
    #接受csv格式数据,根据情况修改为自己的地址
    df = pd.read_csv(r"C:\Users\allen_sun\Downloads\funsbymonth.csv")

    fans = df['fans'].values
    data=pd.Series(fans)

    df['date'] = pd.to_datetime(df['date'])
    data_index = df['date'].values
    data.index =pd.Index(data_index)

    #data.plot(figsize=(12,8))
    #plt.show()

    return data,fans

#数据处理
data,fans = data_process()

train_data = data.iloc[:int(0.8*len(data))]
test_data = data.iloc[int(0.8*len(data)):]

#模型训练
order = 9  # AR模型的阶数为2
model = AutoReg(train_data, lags=order)
model_fit = model.fit()

#模型预测
predictions = model_fit.predict(start=len(train_data), end=len(data)-1)

#模型评估
from sklearn.metrics import mean_squared_error, mean_absolute_error
#均方误差(MSE),结果越小越好
mse = mean_squared_error(test_data, predictions)
#平均绝对误差(MAE), 结果越小越好
mae = mean_absolute_error(test_data, predictions)
mse
mae

#print(predictions)


#预测起止点
start = 10
#预测长度,此长度表示向后预测4个阶段
end = len(fans)+3

order = 9  # AR模型的阶数为2
model = AutoReg(train_data, lags=order)
model_fit = model.fit()
arpredict_y3 =model_fit.predict(start=start, end=end ,dynamic = False)
fig, ax = plt.subplots(figsize=(12, 8))
#python自带的绘制曲线开始日期
starTime = '2022-1-31'
ax = data.ix[starTime:].plot(ax=ax)
arpredict_y3.plot(ax=ax)
plt.show()

Parámetros en elementos de evaluación:

1. Error cuadrático medio (MSE), cuanto menor sea el resultado, mejor.

2. Error cuadrático medio (RMSE), cuanto menor sea el resultado, mejor.

3. Error absoluto medio (MAE), cuanto menor sea el resultado, mejor.

4. Error porcentual absoluto medio (MAPE), cuanto menor sea el resultado, mejor.

Efecto: (También está bien)

 https://blog.csdn.net/qq_40206371/article/details/121103377

Supongo que te gusta

Origin blog.csdn.net/Alex_81D/article/details/132710764
Recomendado
Clasificación