给出lstm时间预测序列的代码数据集为csv格式总共150行数据
以下是一个使用LSTM模型进行时间序列预测的示例代码:
import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense
# 读取数据集
df = pd.read_csv('data.csv')
# 提取时间序列数据
data = df['value'].values.reshape(-1, 1)
# 数据归一化
scaler = MinMaxScaler()
data_scaled = scaler.fit_transform(data)
# 划分训练集和测试集
train_size = int(len(data_scaled) * 0.8)
train_data = data_scaled[:train_size, :]
test_data = data_scaled[train_size:, :]
# 构建训练数据和标签
def create_dataset(dataset, window_size=1):
X, y = [], []
for i in range(len(dataset) - window_size):
X.append(dataset[i:i+window_size, 0])
y.append(dataset[i+window_size, 0])
return np.array(X), np.array(y)
window_size = 5
X_train, y_train = create_dataset(train_data, window_size)
X_test, y_test = create_dataset(test_data, window_size)
# 转换为LSTM所需的输入格式 [样本数,时间步,特征数]
X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1))
X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1))
# 构建LSTM模型
model = Sequential()
model.add(LSTM(50, activation='relu', input_shape=(window_size, 1)))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse')
# 训练模型
model.fit(X_train, y_train, epochs=50, batch_size=32, verbose=2)
# 预测测试集
predictions = model.predict(X_test)
predictions = scaler.inverse_transform(predictions)
# 可视化预测结果
import matplotlib.pyplot as plt
plt.plot(df.index[train_size+window_size:], data[train_size+window_size:], label='Actual')
plt.plot(df.index[train_size+window_size:], predictions, label='Predicted')
plt.legend()
plt.show()
请确保将代码中的data.csv替换为您自己的数据集文件名,并根据实际情况调整窗口大小、LSTM模型参数等
原文地址: https://www.cveoy.top/t/topic/hFRc 著作权归作者所有。请勿转载和采集!