时间序列预测代码

简单移动平均,利用Numpy、Pandas

import random data = [random.uniform(0, 10) for i in range(100)] # 生成100个 10以内的浮点数 import pandas as pd import numpy as np df = pd.DataFrame(data, columns=['value']) df['SMA_10'] = df['value'].rolling(window=10).mean() #大小为10的窗口 print(df.head(30)) mae = np.mean(np.abs(df['value'] - df['SMA_10'])) # 平均绝对误差评估 print("MAE: ", mae)

指数平滑法

import pandas as pd import numpy as np import matplotlib.pyplot as plt # 读入数据 data = pd.read_csv('/Users/xujingfei/Desktop/data.csv', header=None, names=['date', 'value']) # 设定平滑系数alpha alpha = 0.99 # 初始化预测值 data['forecast'] = np.nan # 计算第一个预测值 data.at[1, 'forecast'] = data['value'][0] # 计算预测值 for i in range(2, len(data)): data.at[i, 'forecast'] = alpha * data['value'][i-1] + (1-alpha) * data['forecast'][i-1] # 绘制原始数据和预测值 plt.plot(data['date'], data['value'], label='Actual') plt.plot(data['date'], data['forecast'], label='Forecast') plt.legend() plt.show()

霍尔特指数平滑法

相比较于简单指数平滑,霍尔特将季节性、趋势考虑进来,分为水平部分、趋势部分 # 霍尔特指数平滑 def holt_exponential_smoothing(x, alpha, beta): """ 霍尔特指数平滑法 x: 时间序列数据 alpha: 水平平滑系数 beta: 趋势平滑系数 """ n = len(x) y_hat = np.zeros(n) # 保存预测值 l = np.zeros(n) # 保存水平值 b = np.zeros(n) # 保存趋势值 # 初始化水平值和趋势值 l[0] = x[0] # 水平部分一般使用前几期实际值的平均值 #l[0] = 509 b[0] = x[1] - x[0] # 当初始阶段假定没有趋势的情况下,可以设定为0 #b[0] = 0 # 计算水平值和趋势值 for i in range(1, n): l[i] = alpha * x[i] + (1 - alpha) * (l[i-1] + b[i-1]) b[i] = beta * (l[i] - l[i-1]) + (1 - beta) * b[i-1] # 预测 for i in range(n): y_hat[i] = l[i] + b[i] return y_hat[:n]

线性回归

from sklearn.linear_model import LinearRegression import matplotlib.pyplot as plt import numpy as np from sklearn.metrics import mean_squared_error,r2_score # 构造训练数据 x = [[1, 2], [2, 4], [3, 6], [4, 8]] y = [2, 4, 6, 8] # 创建线性回归模型并进行训练 model = LinearRegression() model.fit(x, y) # 打印模型的系数和截距 print("Coefficients: ", model.coef_) print("Intercept: ", model.intercept_) plt.plot(x,y,c='orange') plt.title('Straight Line') plt.show() # # 使用训练好的模型进行预测 X_new = [[5, 1]] y_pred = model.predict(X_new) print("Predicted y: ", y_pred)

时间序列分解

分解为趋势、季节、随机


__EOF__

本文作者ivan09
本文链接https://www.cnblogs.com/ivan09/p/17142795.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   烦恼1234  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示