使用线性回归构建房价预测模型
使用线性回归构建房价预测模型
- 前言
- 一、采用正规方程方法
- 1.1引入构建模型所需要的库
- 1.2构建模型代码
- 二、采用梯度下降方法
- 2.1引入库
- 2.2模型构建
- 总结
前言
采用 scikit-learn 自带的数据集 load_boston 并采用线性回归方法构建房价预测模型。模型的优化一共采用了两种方法:正规方程、梯度下降
正规方程和梯度下降法是线性回归经常使用的两种优化算法。都以最小化损失函数为目标得到模型参数。
构建模型的标准步骤:
- 获取数据
- 数据基本处理:分割数据、缺失值处理等
- 特征工程:标准化、归一化等
- 模型训练
- 模型评估
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)
总结
对于两种优化算法:
- 正规方程更适合与维度较小的数据集,可以更快地得到好结果,对于大的数据集不仅计算困难,而且难以解决过拟合的问题
- 梯度下降适合更大的数据集,在神经网络、深度学习算法中的使用都非常广泛
两种优化算法的输出结果:
因为这里采用的是线性回归方法,训练效果其实一般,不适宜作为参考
使用线性回归构建房价预测模型相关推荐
- 【火炉炼AI】机器学习006-用决策树回归器构建房价评估模型
[火炉炼AI]机器学习006-用决策树回归器构建房价评估模型 (本文所使用的Python库和版本号: Python 3.5, Numpy 1.14, scikit-learn 0.19, matplo ...
- 使用线性回归构建波士顿房价预测模型
使用线性回归构建波士顿房价预测模型 描述 波士顿房价数据集统计了波士顿地区506套房屋的特征以及它们的成交价格,这些特征包括周边犯罪率.房间数量.房屋是否靠河.交通便利性.空气质量.房产税率.社区师生 ...
- ML之LiRLassoR:利用boston房价数据集(PCA处理)采用线性回归和Lasso套索回归算法实现房价预测模型评估
ML之LiR&LassoR:利用boston房价数据集(PCA处理)采用线性回归和Lasso套索回归算法实现房价预测模型评估 目录 利用boston房价数据集(PCA处理)采用线性回归和Las ...
- paddlepaddle框架——波士顿房价预测模型(附原始数据)
波士顿房价预测是一个经典的机器学习任务,类似于程序员世界的"Hello World".和大家对房价的普遍认知相同,波士顿地区的房价受诸多因素影响.该数据集统计了13种可能影响房价的 ...
- 线性回归-预测房价(机器学习)
机器学习-线性回归-预测房价 导入我们需要的模块包 import pandas as pd import numpy as np import matplotlib as plt import sea ...
- MOOC网深度学习应用开发1——Tensorflow基础、多元线性回归:波士顿房价预测问题Tensorflow实战、MNIST手写数字识别:分类应用入门、泰坦尼克生存预测
Tensorflow基础 tensor基础 当数据类型不同时,程序做相加等运算会报错,可以通过隐式转换的方式避免此类报错. 单变量线性回归 监督式机器学习的基本术语 线性回归的Tensorflow实战 ...
- R使用深度学习LSTM构建时间序列预测模型
R使用深度学习LSTM构建时间序列预测模型 LSTM的全称是Long Short Term Memory,顾名思义,它具有记忆长短期信息的能力的神经网络.LSTM首先在1997年由Hochreiter ...
- 得到多组单选框的值_多组学如何构建预后预测模型,还发了7分+?
今天小编解读的这篇文章是2020年发表在Molecular Therapy-Nucleic Acids上(影响因子7.032).此研究对肺腺癌进行了多组学分析,并建立预后预测模型.作者的预后预测模型可 ...
- 02-06 普通线性回归(波斯顿房价预测)+特征选择
文章目录 普通线性回归(波士顿房价预测) 导入模块 获取数据 打印数据 特征选择 散点图矩阵 关联矩阵 训练模型 可视化 普通线性回归(波士顿房价预测) 导入模块 import pandas as p ...
最新文章
- php 项目中引用对方接口_关于PHP中为什么要写接口的问题说明
- Spark(Hive)对字符串数值的排序
- KVC、谓词、单例设计模式
- PHP用户名和密码登陆验证代码
- Atitit 单项功能开发 最佳实践规范 标准化流程attilax总结.docx
- 使用PrtSc键截屏
- 开源好用的 Android 市场 F-Droid
- java转换docx为doc文件_JAVA - 将doc文档转为docx文档
- Cisco网站模块8-10网络间通信考试试题及答案
- linux 限速命令,linux上传限速脚本介绍
- PyQt5在窗口上显示动态图表
- Word 样式模板复制到另一文档
- 盘点40余款好用的项目管理软件
- c语言矢量字体库,单片机用矢量字库的C语言调用
- cdn.jsdelivr.net无法访问的解决方法
- Caused by: java. io. IOException: Could not find resource com/kuang/dao/UserMapper.xml
- 《中国制造2025》重点领域技术创新路线图(2017年版)发布会在北京召开
- Silverlight资源概述
- J-Link V9 复活
- DSP串口通信浮点数