本实例在前辈基础上,代码有所修改。为了支持Python3.6修改了一处编码方式,
- 本文使用单层的LSTM模型对数据进行预测,更为复杂的多层LSTM模型也是基于单层LSTM模型进行扩展。定义一个基本的LSTM模型,需要定义如下几个部分:
1. 定义时间步, 定义每个输入数据与前多少个有序的输入的数据有关联
2. 定义隐层神经元的数量
3. 定义每批训练样本数
4. 定义输入层维度、权重、偏置
5. 定义输出层维度、权重、偏置
6. 定义学习率,学习率越小,越容易陷入局部最优结果,学习率越大,相邻两次训练结果间的抖动越大
7. 定义损失函数
8. 定义训练次数
9. 构建训练数据集
10. 构建测试数据集
获取数据集
- 在预测房价之前,需要先获取房价的数据,本文的数据来源为某房地产中介平台的交易数据。
- 数据文件在ChargeInfo.txt文件
-
关键文件
-
PricePredictor.py
- LSTM预测模型实现
-
chargeInfo.txt
- 房价数据
运行走势图
纵坐标数值的单位为 万RMB
源码地址
- 基于LSTM的demo代码实现在github上发布,传送门:https://github.com/huntertan/lstm-spider/tree/master/prediction
修改代码部分为
area = float(data[5].replace("平米", "").encode("utf-8"))
price = float(data[2])
pricePerSquare = price / area
charge = [str(data[1]), data[6].replace('\n', '').encode("utf-8"), data[3].encode("utf-8"), pricePerSquare]
注意要设置保存模型 stock.model
本文实现的demo离实际的工程应用还有差距,仅供体验和参考