分别使用线性回归、二次多项式回归、三次多项式回归对数据集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() 

从这个图中,我们可以看出,线性回归模型的相对误差最大,二次多项式回归次之,三次多项式回归模型的相对误差最小,且拟合和预测效果最好。

波士顿房价数据集——回归分析相关推荐

  1. 综合实例--波士顿房价数据集回归分析

    Boston 数据集的线性,二次多项式,三次多项式回归. 使用线性回归,二次多项式回归,三次多项式回归,分别训练boston 房价回归模型,并使用训练的模型对数据集进行房价预测. 使用线性回归,上图给 ...

  2. Dataset之Boston:Boston波士顿房价数据集的简介、下载、使用方法之详细攻略

    Dataset之Boston:Boston波士顿房价数据集的简介.下载.使用方法之详细攻略 目录 Boston波士顿房价数据集的简介 Boston波士顿房价数据集的下载 Boston波士顿房价数据集的 ...

  3. Python机器学习/数据挖掘项目实战 波士顿房价预测 回归分析

    Python机器学习/数据挖掘项目实战 波士顿房价预测 回归分析 此数据源于美国某经济学杂志上,分析研究波士顿房价( Boston HousePrice)的数据集. 在这个项目中,你将利用马萨诸塞州波 ...

  4. 波士顿房价数据集怎么不见了?

    波士顿数据下载 消失的波士顿 OoO  做线性回归的同学大概率会用到一个数据集,即波士顿房价数据集,然而当你从sklearn下载该数据集时,你会惊讶地发现居然下载不了了!!!起初我以为是什么别的原因导 ...

  5. ML之xgboost:利用xgboost算法对Boston(波士顿房价)数据集【特征列分段→独热编码】进行回归预测(房价预测)+预测新数据得分

    ML之xgboost:利用xgboost算法对Boston(波士顿房价)数据集[特征列分段→独热编码]进行回归预测(房价预测)+预测新数据得分 导读 对Boston(波士顿房价)数据集进行特征工程,分 ...

  6. ML之回归预测:利用13种机器学习算法对Boston(波士顿房价)数据集【13+1,506】进行回归预测(房价预测)+预测新数据得分

    ML之回归预测:利用13种机器学习算法对Boston(波士顿房价)数据集[13+1,506]进行回归预测(房价预测)+预测新数据得分 导读 本文章基于前边的一篇文章,对13种机器学习的回归模型性能比较 ...

  7. ML之回归预测:利用13种机器学习算法对Boston(波士顿房价)数据集【13+1,506】进行回归预测(房价预测)来比较各模型性能

    ML之回归预测:利用13种机器学习算法对Boston(波士顿房价)数据集[13+1,506]进行回归预测(房价预测)来比较各模型性能 导读 通过利用13种机器学习算法,分别是LiR.kNN.SVR.D ...

  8. TF之LSTM:利用LSTM算法对Boston(波士顿房价)数据集【13+1,506】进行回归预测(房价预测)

    TF之LSTM:利用LSTM算法对Boston(波士顿房价)数据集[13+1,506]进行回归预测(房价预测) 相关文章 DL之LSTM:利用LSTM算法对Boston(波士顿房价)数据集[13+1, ...

  9. ML之LiRDNNEL:基于skflow的LiR、DNN、sklearn的RF对Boston(波士顿房价)数据集进行回归预测(房价)

    ML之LiR&DNN&EL:基于skflow的LiR.DNN.sklearn的RF对Boston(波士顿房价)数据集进行回归预测(房价) 目录 输出结果 设计思路 核心代码 输出结果 ...

  10. ML之DTRFRExtraTRGBR:基于四种算法(DT、RFR、ExtraTR、GBR)对Boston(波士顿房价)数据集(506,13+1)进行价格回归预测并对比各自性能

    ML之DT&RFR&ExtraTR&GBR:基于四种算法(DT.RFR.ExtraTR.GBR)对Boston(波士顿房价)数据集(506,13+1)进行价格回归预测并对比各自 ...

最新文章

  1. 大数据流通存隐忧 产业信任体系亟待建立
  2. 如何得到iterator的当前元素_链表进化!双向链表+迭代器(Iterator)!
  3. C语言编程学生学籍登录窗口,C语言实现学生学籍管理系统
  4. [html] 常见的浏览器内核都有哪些?并介绍下你对内核的理解
  5. vue——走马灯-类轮播图
  6. 【LeetCode笔记】225. 用队列实现栈(Java、队列、栈)
  7. 分布式服务架构下的混沌工程实践
  8. java简单自定义Annotation
  9. C# DataTable 和List之间相互转换的方法
  10. python遍历数据
  11. Select2 鼠标点击空白处不消失简单测试和解决方法
  12. 消息队列(MSMQ)学习
  13. SOA 普元EOS 工作流开发
  14. 两种前端在线json编辑器方案(无法解决number精度丢失问题)
  15. 面向对象六大原则——开闭原则
  16. word里面怎样输入空白下划线
  17. 阿里云实时计算对接mysql_一小时完成基于阿里云流计算的实时计算系统搭建
  18. config.c 或者config.s 依照os的不同而config.X 的X也是不同的:
  19. JAVA 正则表达式 (超详细,转)
  20. POJO和PO的概念,区别

热门文章

  1. 悲催的一下午:怎么删除360。。。
  2. 层次结构类毕业论文文献都有哪些?
  3. Oracle Coherence:分布式数据管理
  4. 第一章 Crystal Reports简介
  5. win10电脑忘记开机密码的解锁方法
  6. aut0cad2010卸载工具_解决软件注册表卸载不干净导致的autocad2010无法安装问题。...
  7. 最近做一个新闻类项目,用到调用新浪微博接口,经过研究测试整理步骤如下:先根据此内容获取App Key和Secret Key
  8. Bcm96xx 系列芯片 SDK介绍(一)
  9. android实现应用商店开发,基于Android平台的应用商店客户端的设计与实现
  10. 大学生计算机科学项目,计算机科学学院喜获2018年大学生创新创业项目多个立项...