使用线性回归构建房价预测模型

  • 前言
  • 一、采用正规方程方法
    • 1.1引入构建模型所需要的库
    • 1.2构建模型代码
  • 二、采用梯度下降方法
    • 2.1引入库
    • 2.2模型构建
  • 总结

前言

采用 scikit-learn 自带的数据集 load_boston 并采用线性回归方法构建房价预测模型。模型的优化一共采用了两种方法:正规方程、梯度下降
正规方程和梯度下降法是线性回归经常使用的两种优化算法。都以最小化损失函数为目标得到模型参数。

构建模型的标准步骤:

  1. 获取数据
  2. 数据基本处理:分割数据、缺失值处理等
  3. 特征工程:标准化、归一化等
  4. 模型训练
  5. 模型评估

scikit-learn 版本:0.20.4
python 版本:3.7.10

一、采用正规方程方法

1.1引入构建模型所需要的库

# 获取数据集
from sklearn.datasets import load_boston
# 数据分割
from sklearn.model_selection import train_test_split
# 数据标准化
from sklearn.preprocessing import StandardScaler
# 引入 scikit-learn 内置的正规方程优化模型
from sklearn.linear_model import LinearRegression
# 评估模型采用均方误差
from sklearn.metrics import mean_squared_error

1.2构建模型代码

def linear_model1():"""线性回归:正规方程:return:"""# 1.获取数据boston = load_boston()# print(boston)# 2.数据基本处理# 2.1 分割数据x_train, x_test, y_train, y_test = train_test_split(boston.data, boston.target, test_size=0.2)# 3.特征工程-标准化transfer = StandardScaler()# 属性值需要标准化,目标值不需要标准化x_train = transfer.fit_transform(x_train)x_test = transfer.fit_transform(x_test)# 4.机器学习-线性回归(通过正规方程方法)estimator = LinearRegression()estimator.fit(x_train, y_train)  # 把训练数据的属性和目标值都传进去# 5.模型评估# 5.1 预测值y_pre = estimator.predict(x_test)  #传入测试数据、传出预测目标值# print("预测值是:\n", y_pre)# 5.2 均方误差ret = mean_squared_error(y_test,y_pre)  # 传入 目标值 和 预测目标值,得到预测值与真实值的均方误差print("均方误差:\n", ret)

二、采用梯度下降方法

梯度下降算法与正规方程方法本身有很大差别,但在使用 scikit-learn 进行模型训练时,只是调用的模型方法不同

采用梯度下降方法,需要引入 SGDRegressor 随机梯度下降学习

2.1引入库

引入库的过程与前面并没有什么区别

# 获取数据集
from sklearn.datasets import load_boston
# 数据分割
from sklearn.model_selection import train_test_split
# 数据标准化
from sklearn.preprocessing import StandardScaler
# 引入 scikit-learn 内置的正规方程优化模型
from sklearn.linear_model import SGDRegressor
# 评估模型采用均方误差
from sklearn.metrics import mean_squared_error

2.2模型构建

模型构建也没有什么区别,只是实例化模型的方法不同

def linear_model2():"""线性回归:梯度下降法:return:"""# 1.获取数据boston = load_boston()# print(boston)# 2.数据基本处理# 2.1 分割数据x_train, x_test, y_train, y_test = train_test_split(boston.data, boston.target, test_size=0.2)# 3.特征工程-标准化transfer = StandardScaler()x_train = transfer.fit_transform(x_train)x_test = transfer.fit_transform(x_test)# 4.机器学习-线性回归(采用梯度下降算法)# 对于 梯度下降算法 从scikit-learn版本0.19后需要设置停止的规则,包括两个参数:max_iter、tol# 学习率算法默认采用 invscaling 会根据模型的训练对学习率动态调整estimator = SGDRegressor(max_iter=2000,tol=0.001)estimator.fit(x_train, y_train)# 5.模型评估# 5.1 预测值y_pre = estimator.predict(x_test)# 5.2 均方误差ret = mean_squared_error(y_test, y_pre)print("均方误差:\n", ret)

总结

对于两种优化算法:

  • 正规方程更适合与维度较小的数据集,可以更快地得到好结果,对于大的数据集不仅计算困难,而且难以解决过拟合的问题
  • 梯度下降适合更大的数据集,在神经网络、深度学习算法中的使用都非常广泛

两种优化算法的输出结果:

因为这里采用的是线性回归方法,训练效果其实一般,不适宜作为参考

使用线性回归构建房价预测模型相关推荐

  1. 【火炉炼AI】机器学习006-用决策树回归器构建房价评估模型

    [火炉炼AI]机器学习006-用决策树回归器构建房价评估模型 (本文所使用的Python库和版本号: Python 3.5, Numpy 1.14, scikit-learn 0.19, matplo ...

  2. 使用线性回归构建波士顿房价预测模型

    使用线性回归构建波士顿房价预测模型 描述 波士顿房价数据集统计了波士顿地区506套房屋的特征以及它们的成交价格,这些特征包括周边犯罪率.房间数量.房屋是否靠河.交通便利性.空气质量.房产税率.社区师生 ...

  3. ML之LiRLassoR:利用boston房价数据集(PCA处理)采用线性回归和Lasso套索回归算法实现房价预测模型评估

    ML之LiR&LassoR:利用boston房价数据集(PCA处理)采用线性回归和Lasso套索回归算法实现房价预测模型评估 目录 利用boston房价数据集(PCA处理)采用线性回归和Las ...

  4. paddlepaddle框架——波士顿房价预测模型(附原始数据)

    波士顿房价预测是一个经典的机器学习任务,类似于程序员世界的"Hello World".和大家对房价的普遍认知相同,波士顿地区的房价受诸多因素影响.该数据集统计了13种可能影响房价的 ...

  5. 线性回归-预测房价(机器学习)

    机器学习-线性回归-预测房价 导入我们需要的模块包 import pandas as pd import numpy as np import matplotlib as plt import sea ...

  6. MOOC网深度学习应用开发1——Tensorflow基础、多元线性回归:波士顿房价预测问题Tensorflow实战、MNIST手写数字识别:分类应用入门、泰坦尼克生存预测

    Tensorflow基础 tensor基础 当数据类型不同时,程序做相加等运算会报错,可以通过隐式转换的方式避免此类报错. 单变量线性回归 监督式机器学习的基本术语 线性回归的Tensorflow实战 ...

  7. R使用深度学习LSTM构建时间序列预测模型

    R使用深度学习LSTM构建时间序列预测模型 LSTM的全称是Long Short Term Memory,顾名思义,它具有记忆长短期信息的能力的神经网络.LSTM首先在1997年由Hochreiter ...

  8. 得到多组单选框的值_多组学如何构建预后预测模型,还发了7分+?

    今天小编解读的这篇文章是2020年发表在Molecular Therapy-Nucleic Acids上(影响因子7.032).此研究对肺腺癌进行了多组学分析,并建立预后预测模型.作者的预后预测模型可 ...

  9. 02-06 普通线性回归(波斯顿房价预测)+特征选择

    文章目录 普通线性回归(波士顿房价预测) 导入模块 获取数据 打印数据 特征选择 散点图矩阵 关联矩阵 训练模型 可视化 普通线性回归(波士顿房价预测) 导入模块 import pandas as p ...

最新文章

  1. php 项目中引用对方接口_关于PHP中为什么要写接口的问题说明
  2. Spark(Hive)对字符串数值的排序
  3. KVC、谓词、单例设计模式
  4. PHP用户名和密码登陆验证代码
  5. Atitit 单项功能开发 最佳实践规范 标准化流程attilax总结.docx
  6. 使用PrtSc键截屏
  7. 开源好用的 Android 市场 F-Droid
  8. java转换docx为doc文件_JAVA - 将doc文档转为docx文档
  9. Cisco网站模块8-10网络间通信考试试题及答案
  10. linux 限速命令,linux上传限速脚本介绍
  11. PyQt5在窗口上显示动态图表
  12. Word 样式模板复制到另一文档
  13. 盘点40余款好用的项目管理软件
  14. c语言矢量字体库,单片机用矢量字库的C语言调用
  15. cdn.jsdelivr.net无法访问的解决方法
  16. Caused by: java. io. IOException: Could not find resource com/kuang/dao/UserMapper.xml
  17. 《中国制造2025》重点领域技术创新路线图(2017年版)发布会在北京召开
  18. Silverlight资源概述
  19. J-Link V9 复活
  20. DSP串口通信浮点数

热门文章

  1. 1003 Emergency (25 point(s))
  2. SSH2远程连接例子
  3. 爬虫2_起点中文网字体反爬
  4. sort()排序函数
  5. 电子入门基础知识之:电阻读数方法
  6. python中的除法,取整和求模
  7. 【数据结构与算法】期末复习刷题日寄Part01
  8. java轮盘赌_轮盘赌算法
  9. 数据中心服务器机柜内的信息点数
  10. 更换内存条导致windows启动失败,报错信息:windows无法验证此文件的数字签名,2018.11;