AI预测相关目录
AI预测流程,包括ETL、算法策略、算法模型、模型评估、可视化等相关内容
最好有基础的python算法预测经验
- EEMD策略及踩坑
- VMD-CNN-LSTM时序预测
- 对双向LSTM等模型添加自注意力机制
- K折叠交叉验证
- optuna超参数优化框架
- 多任务学习-模型融合策略
- Transformer模型及Paddle实现
- 迁移学习在预测任务上的tensoflow2.0实现
- holt提取时序序列特征
本文方法其发自《基于IAPSO-Holt-...CN的时序瓦斯浓度预测模型_温廷新》,更详细内容可参考文章内容
一、holt介绍
为发掘具有高度预测性的特征,充分运用特征变量间的线性或非线性关系,应用Holt可构建特征组合(FCIH)。
FCIH = 序列历史特征 及 holt挖掘出的特征
holt挖掘出的特征即序列相关的水平分量、趋势平滑特征分量。
当然,本文省略了超参数优化hlot模型的过程,该过程可参考AI预测合集-optuna超参数优化框架一文。
三、代码示例
自定义holt类
# 定义Holt线性趋势模型的类
class HoltLinear:
def __init__(self, alpha=0.5, beta=0.5):
self.alpha = alpha # 趋势平滑系数
self.beta = beta # 趋势变化平滑系数
# 训练模型
def fit(self, data):
T = len(data)
l = np.zeros(T) # 线性趋势
b = np.zeros(T) # 趋势变化率
l[0] = data[0]
b[0] = data[1] - data[0]
for t in range(1, T):
l[t] = self.alpha * data[t] + (1 - self.alpha) * (l[t-1] + b[t-1])
b[t] = self.beta * (l[t] - l[t-1]) + (1 - self.beta) * b[t-1]
self.l = l
self.b = b
# 预测未来值
def predict(self, steps):
T = len(self.l)
y_pred = np.zeros(steps)
for t in range(T, T+steps):
y_pred[t-T] = self.l[T-1] + self.b[T-1] * (t - T + 1)
return y_pred,self.l,self.b
应用类提取特征
data = pd.read_excel('train_data.xlsx', usecols=[5])
series_close = pd.Series(data["平均风速(m/s)"].values)
model = HoltLinear(alpha=0.2, beta=0.3)
model.fit(series_close)
forecast4,xgsp,phtz = model.predict(5)
总结
完结,撒花!