找衣服款式的网站,wordpress图标不显示,电商网页设计网站,八桂职教网官网LSTM回归预测#xff0c;多变量输入#xff0c;单输出。
直接替换数据就可以使用#xff0c;不需要对程序大幅修改。
程序内有详细注释#xff0c;便于理解程序运行。
想要点击加好友#xff01;
程序可以出真实值和预测值对比图#xff0c;线性拟合图#xff0c;可以打…LSTM回归预测多变量输入单输出。 直接替换数据就可以使用不需要对程序大幅修改。 程序内有详细注释便于理解程序运行。 想要点击加好友 程序可以出真实值和预测值对比图线性拟合图可以打印多种评价指标方便对比分析。在数据分析与预测的领域中LSTM长短期记忆网络因其对时间序列数据中长短期依赖关系的卓越捕捉能力备受青睐。今天咱们就来聊聊多变量输入、单输出的LSTM回归预测而且我会给出一个拿来就能用稍微替换数据就行的代码示例里面注释详细包你轻松理解。文末还有小彩蛋想要一起交流学习点击加好友哦环境与数据准备咱们先导入必要的库像numpy用于数值计算pandas处理数据matplotlib绘图以及tensorflow中的keras搭建LSTM模型。import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.preprocessing import MinMaxScaler from keras.models import Sequential from keras.layers import LSTM, Dense from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score假设我们的数据存在一个CSV文件里文件名为data.csv数据格式如下有多列自变量特征最后一列为因变量我们要预测的目标值。我们用pandas读取数据。data pd.read_csv(data.csv) features data.drop(target_column, axis 1) target data[target_column]数据预处理为了让LSTM模型更好地学习我们需要对数据进行归一化处理。这里使用MinMaxScaler将数据缩放到[0, 1]区间。scaler_features MinMaxScaler(feature_range(0, 1)) scaler_target MinMaxScaler(feature_range(0, 1)) features_scaled scaler_features.fit_transform(features) target_scaled scaler_target.fit_transform(target.values.reshape(-1, 1))接下来我们要把数据转换成LSTM模型能接受的输入格式。LSTM模型期望输入的数据是三维的维度分别是[样本数, 时间步长, 特征数]。假设我们设定时间步长为time_steps。time_steps 30 X, y [], [] for i in range(len(features_scaled) - time_steps): X.append(features_scaled[i:i time_steps]) y.append(target_scaled[i time_steps]) X np.array(X) y np.array(y)搭建LSTM模型现在开始搭建简单的LSTM模型这里就一个LSTM层然后接一个全连接输出层。model Sequential() model.add(LSTM(50, return_sequencesFalse, input_shape(time_steps, features.shape[1]))) model.add(Dense(1)) model.compile(optimizeradam, lossmse)在LSTM层里50是隐藏单元的数量returnsequencesFalse表示我们只返回最后一个时间步的输出因为我们做的是单输出预测。inputshape则指定了输入数据的形状也就是(时间步长, 特征数)。模型训练与预测训练模型很简单调用fit方法就行。model.fit(X, y, epochs50, batch_size64, verbose1) # 预测 predicted model.predict(X)数据逆归一化与评估预测完了我们要把数据还原到原始尺度这样才能计算真实的评价指标和绘图。predicted scaler_target.inverse_transform(predicted) y_actual scaler_target.inverse_transform(y) # 计算评价指标 mse mean_squared_error(y_actual, predicted) mae mean_absolute_error(y_actual, predicted) r2 r2_score(y_actual, predicted) print(fMean Squared Error: {mse}) print(fMean Absolute Error: {mae}) print(fR2 Score: {r2})绘图展示最后我们绘制真实值和预测值对比图以及线性拟合图直观看看模型的预测效果。plt.figure(figsize(12, 6)) plt.plot(y_actual, labelActual) plt.plot(predicted, labelPredicted) plt.title(Actual vs Predicted) plt.xlabel(Time) plt.ylabel(Value) plt.legend() plt.show() plt.figure(figsize(8, 6)) plt.scatter(y_actual, predicted) plt.plot([y_actual.min(), y_actual.max()], [y_actual.min(), y_actual.max()], k--, lw2) plt.xlabel(Actual) plt.ylabel(Predicted) plt.title(Linear Fit) plt.show()这样一个完整的多变量输入、单输出的LSTM回归预测就完成啦是不是还挺简单的如果你在使用过程中有任何问题或者想一起探讨更多有趣的机器学习项目点击加好友咱们一起交流呀