LSTM进行房价预测

提示:以下是本篇文章正文内容,下面案例可供参考

1.引入库

import pandas as pd
import numpy as np
import tensorflow as tf

from sklearn.preprocessing import MinMaxScaler, LabelEncoder
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense, Dropout

from matplotlib import pyplot as plt
%matplotlib inline

2.读入数据

raw_data = pd.read_csv("C:/Users/ROG/Desktop/report1/dataset/train.csv")
raw_data.drop('Id', axis=1, inplace=True)
raw_data.info()

3.连续数值归一化

numeric_features =raw_data.dtypes[raw_data.dtypes != 'object' ].index
numeric_features=numeric_features[:-1]#不对房价处理
raw_data[numeric_features] = raw_data[numeric_features].apply(lambda x: (x - x.mean())/(x.std()))
raw_data.info()

4.用均值0填充空缺

<
为了实现GWO-LSTM预测房价,我们需要进行以下步骤:\n\1. 收集房价数据集并进行预处理,包括数据清洗、归一化等操作。\```pyth\# 导入必要的库\impor pandas as p\impor numpy as np\from sklear.preprocessing impor MiMaxScaler\n\# 读取数据集\ = p.r_csv('hous_pri.csv')\n\# 数据清洗\ = .drop()\n\# 归一化\sr = MiMaxScaler()\ = scaler.fi_transform()\```\n\2. 将数据集分为训练集和测试集,并进行数据转换以适应LSTM模型。\```pyth\# 定义函数将数据转换为LSTM模型的输入格式\f cr_datas(datas, look_back=1):\ X, Y = [], []\ for i i rang((datas)-k_back-1):\ = datas[i(i+k_back), ]\ X.app()\ Y.app(datas[i + look_back, ])\ retur np.array(X), np.array(Y)\n\# 定义训练集和测试集的大小\rai_siz = i(() * .67)\s_siz = () - trai_siz\n\# 分割训练集和测试集\rai, tes = [rai_siz,], [trai_siz(),]\n\# 将数据转换为LSTM模型的输入格式\k_back = 3\raiX, traiY = cr_datas(trai, look_back)\sX, tesY = cr_datas(tes, look_back)\n\# 将输入数据转换为3D格式\raiX = np.reshap(traiX, (raiX.shap[], 1, traiX.shap[1]))\sX = np.reshap(tesX, (sX.shap[], 1, tesX.shap[1]))\```\n\3. 构建GWO-LSTM模型并进行训练。\```pyth\# 导入必要的库\from keras.models impor Sequenti\from keras.layers impor Dens\from keras.layers impor LSTM\from keras.optimizers impor Adam\from wolf_opimizati impor GWO\n\# 定义GWO-LSTM模型\m = Sequenti()\m.(LSTM(4, inpu_shap=(1, look_back)))\m.(Dens(1))\m.compi(loss='m_squar_error', optimizer=Adam())\n\# 定义GWO优化器\gw = GWO()\n\# 训练模型\m.fi(traiX, traiY, epochs=100, batch_siz=1, verbos=2, optimizer=gw)\```\n\4. 对测试集进行预测并计算误差。\```pyth\# 对测试集进行预测\sPredi = m.predi(tesX)\n\# 将预测结果转换为原始数据的范围\sPredi = scaler.invers_transform(tesPredi)\sY = scaler.invers_transform([sY])\n\# 计算误差\from sklear.metrics impor m_squar_error\ms = m_squar_error(tesY[], tesPredi[:,])\pri('M Squr Error %.2f' % ms)\```\n\
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值