波士顿房价数据集——回归分析
分别使用线性回归、二次多项式回归、三次多项式回归对数据集Boston进行回归分析,并比较这三种回归的结果。
一、加载数据
# Boston数据集
# 使用load_boston()方法,从sklearn.datasets模块导入波士顿房价数据集
from sklearn.linear_model import LinearRegression
from sklearn.datasets import load_boston
boston=load_boston()
X=boston.data
y=boston.target
二、模型训练
1、线性回归
LinearRegression()是sklearn.linear_model的一个类,使用它进行线性回归分析,先生成一个LinearRegression类的实例,使用实例调用fit(X,y)方法来拟合数组自变量X和目标集y,拟合好回归方程后,可使用predict()方法预测新样本的回归值。
# 线性回归部分
clf_lin_reg=LinearRegression().fit(X,y) # 生成一个线性回归模型的实例并调用模型
y_lin_reg_pred=clf_lin_reg.predict(X) # 预测值
import matplotlib.pyplot as plt
# 可视化部分
plt.rcParams['font.sans-serif']='SimHei' # 设置字体,显示中文
plt.rcParams['axes.unicode_minus']=False # 坐标轴刻度显示负号
plt.rc('font',size=14) # 设置图中字号大小
plt.figure(figsize=(15,4))
plt.plot(y,marker='o')
plt.plot(y_lin_reg_pred,marker='*')
plt.legend(['真实值','预测值'])
plt.title('Boston房价线性回归预测值与真实值的对比')
plt.show() # 显示图形
3、多项式回归(例:二项式和三项式)
对具有高次项的非线性问题,需使用多项式回归,scikit-learn对多项式回归没有直接的方法,而是在数据预处理模块sklearn.preprocessing提供了PolynomialFeatures()类,该类将数据集变换为具有高次项特征的新数据集,将原始问题转化为线性回归问题,再使用线性回归方法对转化后的数据集进行训练,从而间接地进行多项式回归分析。
特征与目标之间是飞线性关系,需要使用PolynomialFeatures()类增加高次项特征,将其转化为线性关系,然后使用fit()方法拟合数据集,使用transform()方法将原始数据集变换为线性形式。
(1)二次多项式回归:
# 2次多项式回归
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
boston_poly=PolynomialFeatures(2) # 参数为2,也就是原始方程的最高次数是2
boston_poly.fit(X) # 拟合多项式模型
X2=boston_poly.transform(X) # 使用拟合模型变换X
print('原始数据集X的形状为:',X.shape)
print('X转换为X2后的形状为:',X2.shape)
对一个原有13个特征的数据集,经二次多项式线性变换后,特征增加到了105个,然后使用线性回归方法,对新的数据集训练回归模型,使用训练好的多项式特征模型和线性回归模型分别转换原始数据集、预测转换后的数据集,获取目标值,并比较分析预测值与真实值。
# 新数据集的回归模型
lin_reg=LinearRegression()
lin_reg.fit(X2,y)
y_poly2_predict=lin_reg.predict(X2)
# 可视化部分
plt.figure(figsize=(15,4))
plt.plot(y,marker='o')
plt.plot(y_poly2_predict,marker='*')
plt.legend(['真实值','预测值'])
plt.title('Boston房价二次多项式回归预测值与真实值的对比')
plt.show()
(2)三次多项式回归
# 三次多项式回归
boston_poly3=PolynomialFeatures(3) # 参数为3,也就是原方程的最高次数为3
boston_poly3.fit(X) # 拟合多项式模型
X3=boston_poly3.transform(X) # 使用拟合模型变换X
print('原始数据集X的形状为:',X.shape)
print('X转换为X3后的形状为:',X3.shape)
原始数据集的13个特征经三次多项式变换后,增加到了560个特征,这个变换比较大,原始特征数和多项式变换的项最高次数的增加,使线性变换后的特征数急剧增加。
# 线性回归部分
lin_reg=LinearRegression() # 生成线性回归模型实例
lin_reg.fit(X3,y) # 调用
y_poly3_predict=lin_reg.predict(X3)
# 可视化部分
plt.figure(figsize=(15,4))
plt.plot(y,marker='o')
plt.plot(y_poly3_predict,marker='*')
plt.legend(['真实值','预测值'])
plt.title('Boston房价三次多项式回归预测值与真实值的对比')
plt.show()
三、对比分析
为了进一步的对比这3个估计器的性能,分别计算预测值与真实值的相对误差,绘制相对误差曲线,并进行对比分析。
# 计算三种回归模型预处值与真实值的相对误差
error_linear=(y_lin_reg_pred-y)/y
error_poly2=(y_poly2_predict-y)/y
error_poly3=(y_poly3_predict-y)/y
# 可视化,绘制相对误差
plt.figure(figsize=(15,4))
plt.plot(error_linear,c='r')
plt.plot(error_poly2,c='y')
plt.plot(error_poly3,c='b')
plt.legend(['linear','poly2','poly3'])
plt.title('3个估计器对Boston房价预测值与真实值的相对误差')
plt.show()
从这个图中,我们可以看出,线性回归模型的相对误差最大,二次多项式回归次之,三次多项式回归模型的相对误差最小,且拟合和预测效果最好。
波士顿房价数据集——回归分析相关推荐
- 综合实例--波士顿房价数据集回归分析
Boston 数据集的线性,二次多项式,三次多项式回归. 使用线性回归,二次多项式回归,三次多项式回归,分别训练boston 房价回归模型,并使用训练的模型对数据集进行房价预测. 使用线性回归,上图给 ...
- Dataset之Boston:Boston波士顿房价数据集的简介、下载、使用方法之详细攻略
Dataset之Boston:Boston波士顿房价数据集的简介.下载.使用方法之详细攻略 目录 Boston波士顿房价数据集的简介 Boston波士顿房价数据集的下载 Boston波士顿房价数据集的 ...
- Python机器学习/数据挖掘项目实战 波士顿房价预测 回归分析
Python机器学习/数据挖掘项目实战 波士顿房价预测 回归分析 此数据源于美国某经济学杂志上,分析研究波士顿房价( Boston HousePrice)的数据集. 在这个项目中,你将利用马萨诸塞州波 ...
- 波士顿房价数据集怎么不见了?
波士顿数据下载 消失的波士顿 OoO 做线性回归的同学大概率会用到一个数据集,即波士顿房价数据集,然而当你从sklearn下载该数据集时,你会惊讶地发现居然下载不了了!!!起初我以为是什么别的原因导 ...
- ML之xgboost:利用xgboost算法对Boston(波士顿房价)数据集【特征列分段→独热编码】进行回归预测(房价预测)+预测新数据得分
ML之xgboost:利用xgboost算法对Boston(波士顿房价)数据集[特征列分段→独热编码]进行回归预测(房价预测)+预测新数据得分 导读 对Boston(波士顿房价)数据集进行特征工程,分 ...
- ML之回归预测:利用13种机器学习算法对Boston(波士顿房价)数据集【13+1,506】进行回归预测(房价预测)+预测新数据得分
ML之回归预测:利用13种机器学习算法对Boston(波士顿房价)数据集[13+1,506]进行回归预测(房价预测)+预测新数据得分 导读 本文章基于前边的一篇文章,对13种机器学习的回归模型性能比较 ...
- ML之回归预测:利用13种机器学习算法对Boston(波士顿房价)数据集【13+1,506】进行回归预测(房价预测)来比较各模型性能
ML之回归预测:利用13种机器学习算法对Boston(波士顿房价)数据集[13+1,506]进行回归预测(房价预测)来比较各模型性能 导读 通过利用13种机器学习算法,分别是LiR.kNN.SVR.D ...
- TF之LSTM:利用LSTM算法对Boston(波士顿房价)数据集【13+1,506】进行回归预测(房价预测)
TF之LSTM:利用LSTM算法对Boston(波士顿房价)数据集[13+1,506]进行回归预测(房价预测) 相关文章 DL之LSTM:利用LSTM算法对Boston(波士顿房价)数据集[13+1, ...
- ML之LiRDNNEL:基于skflow的LiR、DNN、sklearn的RF对Boston(波士顿房价)数据集进行回归预测(房价)
ML之LiR&DNN&EL:基于skflow的LiR.DNN.sklearn的RF对Boston(波士顿房价)数据集进行回归预测(房价) 目录 输出结果 设计思路 核心代码 输出结果 ...
- ML之DTRFRExtraTRGBR:基于四种算法(DT、RFR、ExtraTR、GBR)对Boston(波士顿房价)数据集(506,13+1)进行价格回归预测并对比各自性能
ML之DT&RFR&ExtraTR&GBR:基于四种算法(DT.RFR.ExtraTR.GBR)对Boston(波士顿房价)数据集(506,13+1)进行价格回归预测并对比各自 ...
最新文章
- 大数据流通存隐忧 产业信任体系亟待建立
- 如何得到iterator的当前元素_链表进化!双向链表+迭代器(Iterator)!
- C语言编程学生学籍登录窗口,C语言实现学生学籍管理系统
- [html] 常见的浏览器内核都有哪些?并介绍下你对内核的理解
- vue——走马灯-类轮播图
- 【LeetCode笔记】225. 用队列实现栈(Java、队列、栈)
- 分布式服务架构下的混沌工程实践
- java简单自定义Annotation
- C# DataTable 和List之间相互转换的方法
- python遍历数据
- Select2 鼠标点击空白处不消失简单测试和解决方法
- 消息队列(MSMQ)学习
- SOA 普元EOS 工作流开发
- 两种前端在线json编辑器方案(无法解决number精度丢失问题)
- 面向对象六大原则——开闭原则
- word里面怎样输入空白下划线
- 阿里云实时计算对接mysql_一小时完成基于阿里云流计算的实时计算系统搭建
- config.c 或者config.s 依照os的不同而config.X 的X也是不同的:
- JAVA 正则表达式 (超详细,转)
- POJO和PO的概念,区别
热门文章
- 悲催的一下午:怎么删除360。。。
- 层次结构类毕业论文文献都有哪些?
- Oracle Coherence:分布式数据管理
- 第一章 Crystal Reports简介
- win10电脑忘记开机密码的解锁方法
- aut0cad2010卸载工具_解决软件注册表卸载不干净导致的autocad2010无法安装问题。...
- 最近做一个新闻类项目,用到调用新浪微博接口,经过研究测试整理步骤如下:先根据此内容获取App Key和Secret Key
- Bcm96xx 系列芯片 SDK介绍(一)
- android实现应用商店开发,基于Android平台的应用商店客户端的设计与实现
- 大学生计算机科学项目,计算机科学学院喜获2018年大学生创新创业项目多个立项...