RNN时间序列预测代码示例 - 数据集为CSV格式,包含RMSE值和折线图
以下是使用RNN进行预测的代码示例,其中数据集为CSV格式,结果用折线图呈现,并计算预测结果的RMSE值:\n\npython\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom sklearn.preprocessing import MinMaxScaler\nfrom sklearn.metrics import mean_squared_error\nfrom tensorflow.keras.models import Sequential\nfrom tensorflow.keras.layers import Dense, LSTM\n\n# 读取CSV数据集\ndata = pd.read_csv('dataset.csv')\n\n# 获取输入特征\ndataset = data.iloc[:, 1:2].values\n\n# 对数据进行归一化处理\nscaler = MinMaxScaler(feature_range=(0, 1))\ndataset = scaler.fit_transform(dataset)\n\n# 划分训练集和测试集\ntrain_size = int(len(dataset) * 0.8)\ntest_size = len(dataset) - train_size\ntrain_data, test_data = dataset[0:train_size,:], dataset[train_size:len(dataset),:]\n\n# 将序列数据转换为监督学习问题\ndef create_dataset(dataset, look_back=1):\n X, Y = [], []\n for i in range(len(dataset)-look_back-1):\n a = dataset[i:(i+look_back), 0]\n X.append(a)\n Y.append(dataset[i + look_back, 0])\n return np.array(X), np.array(Y)\n\nlook_back = 10\ntrain_X, train_Y = create_dataset(train_data, look_back)\ntest_X, test_Y = create_dataset(test_data, look_back)\n\n# 转换为3D格式 [样本数, 时间步长, 特征数]\ntrain_X = np.reshape(train_X, (train_X.shape[0], train_X.shape[1], 1))\ntest_X = np.reshape(test_X, (test_X.shape[0], test_X.shape[1], 1))\n\n# 创建并训练RNN模型\nmodel = Sequential()\nmodel.add(LSTM(units=50, return_sequences=True, input_shape=(look_back, 1)))\nmodel.add(LSTM(units=50))\nmodel.add(Dense(units=1))\nmodel.compile(optimizer='adam', loss='mean_squared_error')\nmodel.fit(train_X, train_Y, epochs=100, batch_size=32)\n\n# 预测\ntrain_predict = model.predict(train_X)\ntest_predict = model.predict(test_X)\n\n# 反归一化\ntrain_predict = scaler.inverse_transform(train_predict)\ntrain_Y = scaler.inverse_transform([train_Y])\ntest_predict = scaler.inverse_transform(test_predict)\ntest_Y = scaler.inverse_transform([test_Y])\n\n# 计算训练集和测试集的RMSE值\ntrain_rmse = np.sqrt(mean_squared_error(train_Y[0], train_predict[:,0]))\ntest_rmse = np.sqrt(mean_squared_error(test_Y[0], test_predict[:,0]))\nprint('Train RMSE: %.2f' % train_rmse)\nprint('Test RMSE: %.2f' % test_rmse)\n\n# 绘制预测结果的折线图\nplt.plot(train_Y[0], label='Actual')\nplt.plot(train_predict[:,0], label='Predicted')\nplt.legend()\nplt.show()\n\nplt.plot(test_Y[0], label='Actual')\nplt.plot(test_predict[:,0], label='Predicted')\nplt.legend()\nplt.show()\n\n\n请确保将代码中的'dataset.csv'替换为实际的数据集文件路径。此代码使用了Keras库来构建RNN模型,并使用MinMaxScaler对数据进行归一化处理。模型训练完成后,使用模型进行预测,并将预测结果和实际结果进行反归一化。最后,计算训练集和测试集的RMSE值,并使用matplotlib库绘制预测结果的折线图。
原文地址: https://www.cveoy.top/t/topic/pp24 著作权归作者所有。请勿转载和采集!