使用RNN预测CSV数据并计算RMSE值 - Python代码示例
以下是一个使用RNN模型进行预测的示例代码,其中数据集为CSV格式,并计算了预测结果的RMSE值。\n\npython\nimport numpy as np\nimport pandas as pd\nfrom sklearn.preprocessing import MinMaxScaler\nfrom sklearn.metrics import mean_squared_error\nfrom keras.models import Sequential\nfrom keras.layers import Dense, SimpleRNN\n\n# 读取CSV数据集\ndataset = pd.read_csv('data.csv')\ndata = dataset.iloc[:, 1:2].values\n\n# 数据归一化\nscaler = MinMaxScaler(feature_range=(0, 1))\ndata = scaler.fit_transform(data)\n\n# 划分训练集和测试集\ntrain_size = int(len(data) * 0.8)\ntest_size = len(data) - train_size\ntrain, test = data[0:train_size,:], data[train_size:len(data),:]\n\n# 创建训练集和测试集\ndef create_dataset(dataset, look_back=1):\n dataX, dataY = [], []\n for i in range(len(dataset)-look_back-1):\n a = dataset[i:(i+look_back), 0]\n dataX.append(a)\n dataY.append(dataset[i + look_back, 0])\n return np.array(dataX), np.array(dataY)\n\nlook_back = 1\ntrainX, trainY = create_dataset(train, look_back)\ntestX, testY = create_dataset(test, look_back)\n\n# 转换为三维数据 [样本数, 时间步, 特征]\ntrainX = np.reshape(trainX, (trainX.shape[0], 1, trainX.shape[1]))\ntestX = np.reshape(testX, (testX.shape[0], 1, testX.shape[1]))\n\n# 创建RNN模型\nmodel = Sequential()\nmodel.add(SimpleRNN(units=32, input_shape=(1, look_back)))\nmodel.add(Dense(units=1))\nmodel.compile(optimizer='adam', loss='mean_squared_error')\n\n# 训练模型\nmodel.fit(trainX, trainY, epochs=100, batch_size=1, verbose=2)\n\n# 预测\ntrainPredict = model.predict(trainX)\ntestPredict = model.predict(testX)\n\n# 反归一化\ntrainPredict = scaler.inverse_transform(trainPredict)\ntrainY = scaler.inverse_transform([trainY])\ntestPredict = scaler.inverse_transform(testPredict)\ntestY = scaler.inverse_transform([testY])\n\n# 计算RMSE值\ntrainScore = np.sqrt(mean_squared_error(trainY[0], trainPredict[:,0]))\nprint('Train RMSE: %.2f' % trainScore)\ntestScore = np.sqrt(mean_squared_error(testY[0], testPredict[:,0]))\nprint('Test RMSE: %.2f' % testScore)\n\n\n请注意,这只是一个简单的RNN模型示例,实际上可以根据具体需求进行模型调整和数据处理。
原文地址: https://www.cveoy.top/t/topic/pp13 著作权归作者所有。请勿转载和采集!