PyTorch深度学习实战 基于多层感知机模型和随机森林模型的某地房价预测_使用感知器实现房价预测(1)

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!


在预处理过数据集后,构建MLP模型,并设置模型的超参数,并在训练集上训练模型。



代码清单2 训练多层感知机模型



def trainMLP(X_train, y_train):
model_mlp = MLPRegressor(
hidden_layer_sizes=(20, 1), activation=‘logistic’, solver=‘adam’, alpha=0.0001, batch_size=‘auto’,
learning_rate=‘constant’, learning_rate_init=0.001, power_t=0.5, max_iter=5000, shuffle=True,
random_state=1, tol=0.0001, verbose=False, warm_start=False, momentum=0.9, nesterovs_momentum=True,
early_stopping=False, beta_1=0.9, beta_2=0.999, epsilon=1e-08)
model_mlp.fit(X_train, y_train)
return model_mlp


如代码清单2所示,该模型的超参数较多,最重要的几个超参数为hidden\_layer\_sizes(隐藏层神经元个数,在本次实验当中隐藏层分别为5和1),activations(激活函数,可以选择relu、logistic、tanh等),solver(优化方法,即sgd、adam等),以及与优化方法相关的learning\_rate(学习率),momentum(动量)等,设置完模型参数后,使用fit函数完成训练过程。



代码清单3 测试模型效果



def test(model, X_test, y_test):
y_pre = model.predict(X_test)
print(“The mean root mean square error of MLP-Model is {}”.format(mean_squared_error(y_test, y_pre)**0.5))
print(“The mean squared error of MLP-Model is {}”.format(mean_squared_error(y_test, y_pre)))
print(“The mean absolute error of MLP-Model is {}”.format(mean_absolute_error(y_test, y_pre)))


训练完成后在测试集上验证模型的效果,如代码清单3所示,不同于分类模型有准确率召回率等指标,回归模型验证模型效果通常采用MSE,MAE、RMSE等。


* MSE(Mean Squared Error)叫做均方误差





![](https://img-blog.csdnimg.cn/img_convert/f86c4f39027241d68fecf2f6740b47a0.png)



* MAE(Mean Absolute Error)为平均绝对误差,是绝对误差的平均值,能更好地反映预测值误差的实际情况





![](https://img-blog.csdnimg.cn/img_convert/14104c09d9cd4d748af2a887e7313561.png)



* RMSE(Root Mean Square Error)为均方根误差,是用来衡量观测值同真值之间的偏差





![](https://img-blog.csdnimg.cn/img_convert/6d74b040c50e4f2592827b3b6ebcd7c6.png)



以上三项指标的值越小,则表示在测试集上预测的结果与真实结果之间的偏差越小,模型拟合效果越好。


如代码清单4所示,在主函数中依次调用上述函数,完成导入数据集、训练、预测的全过程。



代码清单4 构建main函数



if name == ‘main’:
X_train, X_test, y_train, y_test = loadDataSet()
# 训练MLP模型
model = trainMLP(X_train, y_train)
test(model, X_test, y_test)


最终可得输出如下图1所示。





![](https://img-blog.csdnimg.cn/img_convert/5872ceac15df4811bdc3b4586f6e8a11.png)



图1 MLP模型预测效果



改变实验中的超参数,例如隐藏层的神经元个数,可以得到不同的模型以及这些模型在测试集上的得分。如表2所示,当神经元个数为10时,三项指标均获得了最小值,因此可以固定神经元个数为10,再调整其他参数,例如激活函数、优化方法等。


【小技巧】在难以确定参数时,可以将模型在训练集和测试集的误差都打印出来,当训练集误差远远大于测试集误差时,可能会存在过拟合的问题,应当减少参数数目,即神经元的个数。当训练集的误差与测试集误差都很大时,存在欠拟合的问题,应当增加神经元的个数。



表2 不同神经元个数的预测结果





![](https://img-blog.csdnimg.cn/img_convert/7ba4ea518ebe45f79fdbf16d8623336c.png)



## 02、使用随机森林模型实现房价预测




---


如代码清单5、代码清单6所示,导入与随机森林回归模型有关的包,并新增使用随机森林训练模型的函数,修改主函数,其他部分保持不变。



代码清单5 使用随机森林模型进行训练



def trainRF(X_train, y_train):
model_rf = RandomForestRegressor(n_estimators=10000)
model_rf.fit(X_train, y_train)
return model_rf



代码清单6 修改main函数内容



if name == ‘main’:
X_train, X_test, y_train, y_test = loadDataSet()
# 训练RF模型
model = trainRF(X_train, y_train)
test(model, X_test, y_test)


最终得到如图2所示为命令行输出结果。





![](https://img-blog.csdnimg.cn/img_convert/6237d8dbd97148b18b15ed2fcaef4b5f.png)



图2 随机森林模型预测结果



下面调节n\_estimators的数目,并记录相应的评价指标大小。如表3所示为一个随机森林中决策数目发生变化时评价指标的变化。可以发现,随着决策树数目的上升,各项指标都变得更优,一般而言,一个森林中决策树的个数越多,模型预测的准确率越高,但相应的会消耗更多的计算资源,因此在实际应用当中应当权衡效率与正确性这两点。



表3 随机森林不同决策树数目预测结果





![](https://img-blog.csdnimg.cn/img_convert/7888e3c314524bc8ac635cede573e81c.png)



## 03、文末赠书


这是一本讲述如何用NLP技术进行文本内容理解的著作,也是一本系统讲解NLP算法的著作,是作者在NLP和内容理解领域多年经验的总结。


本书结合内容理解的实际业务场景,系统全面、循序渐进地讲解了各种NLP算法以及如何用这些算法高效地解决内容理解方面的难题,主要包括如下几个方面的内容:


(1)文本特征表示


文本特征表示是NLP的基石,也是内容理解的基础环节,本书详细讲解了离散型表示方法和分布型表示方法等特征表示方法及其应用场景,还讲解了词向量的评判标准。


(2)内容重复理解


详细讲解了标题重复、段落重复、文章重复的识别方法和去重算法。


(3)内容通顺度识别及纠正


详细讲解了内容通顺度的识别方法以及纠正不通顺内容的各种算法。


(4)内容质量


详细讲解了多种内容质量相关的算法,以及如何搭建高质量的知识问答体系的流程。


(5)标签体系构建


详细讲解了针对内容理解的标签体系的建设流程和方法,以及相关的多种算法。




![img](https://img-blog.csdnimg.cn/img_convert/d205f485c5fe9a0812334149d3a13897.png)
![img](https://img-blog.csdnimg.cn/img_convert/ecea9bc0e10bf99dd626b98483b46223.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

18)]

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值