一、回归预测

在前面的文章中我们介绍了机器学习主要解决分类、回归和聚类三大问题。今天我们来具体了解一下使用机器学习算法进行回归预测。

回归预测主要用于预测与对象关联的连续值属性,得到数值型的预测数据。回归预测的应用场景有各类的价格预测、相关性的反应预测等。

下面,我们就使用sklearn模块,以一个sklearn中集成的波士顿房价数据集来演示如何进行回归预测。

二、波士顿房价预测

1、引入数据集

在sklearn中内置的数据集都位于datasets子模块下,我们可以直接进行导入:

导入之后,看看数据集中的内容:

其中有五个键,从字面意思上理解,可以发现data是数据集中所有的数据特征,DESCR是数据集的描述信息,target是数据集特征对应的目标值,feature_name则是数据特征的名称。

我们先来看看数据特征的名称:

可以发现数据集中有13个特征,每个特征具体是什么意思,倒不清楚,我们可以在DESCR描述中找到具体意思:

最后可以知道每个数据特征的含义如下:

CRIM:人均犯罪率 ;

ZN:住宅用地超过两万五千平方英尺的比例 ;

INDUS:城镇的非零售营业比例;

CHAS:河流分界;

NOX:一氧化氮浓度 ;

RM:住宅平均房间数;

AGE:1940年之前建造的房屋业主比例;

DIS:距离波士顿五个就业中心的加权距离;

RAD:径向公路的可达指数;

TAX :每一万美元财产的全额财产税率

PTRATIO :城乡教师比例;

B :黑人比例

LSTAT :低层人群比例

MEDV :房屋价格中值

再来看看具体的数据特征和目标数据值:

数据特征形状:

数据特征概览:

数据特征一共有506行,13列,正好对应13个数据特征。而目标数据值的也正好是506个:

相当于是已经处理好的数据了。

但是对于初学者来说,这样处理好的数据看起来不是太直观,我们使用Pandas将其还原为DataFrame的形式,可以直观地看出这个数据集到底是什么样的:

对于熟悉使用pandas的同学来说,这样看这个数据集是不是亲切多了。

好了,我们可以直接进行下一步。

2、分割训练数据和测试数据

为了检验我们创建和训练好的机器学习模型的效果,将数据集分割为训练集和测试集是必须的。

而在sklearn中,也有一个专门的接口方法用于分割数据集的训练集和测试集——train_test_split,我们首先导入它:

然后将我们的数据集data传入,并设置测试集的比例为15%:

3、选择一个回归算法估计器

在sklearn中,所有的机器学习算法都以“估计器”的形式来呈现,每一个估计器都是一个类,机器学习模型通过实例化一个估计器的类来进行创建。比如线性回归的算法估计器:

每一个算法估计器,无论是监督学习算法还是非监督学习算法,都拥有一个fit()方法,用于接收训练数据集来训练数据,比如这样:

同时每一个算法估计器都有用一个predict()方法,用于接收数据来进行预测,比如这样:

在sklearn中,各类机器学习算法的API设计根据不同的用途的算法进行划分,我们可以方便地调用自己想要的算法,每一个监督学习算法,都由一个单独的子模块构成,其下包含算法的具体类,比如广义的线性回归算法:

其中根据用途,有的算法 可细分为用于回归的估计器和用于分类的估计器。

在此,我们选择随机森林算法的用于回归的估计器:

首先,导入算法估计器:

接着,实例化随机森林回归估计器,设置算法的参数并将训练集传入进行训练:

训练好模型之后,再使用predict()方法对训练集进行预测:

这样,我们就获得了使用随机森林回归模型对测试集进行预测的数据了,其为一个一维数组,我们可以直接打印出来看到:

还记得我们分割训练测试集的时候,有过一个y_test的数组吧?它是测试集x_test数据特征对应正确的房价结果,我们也来看看其数据:

如何比较正确数组和预测出来的数组的值的正确度呢?一个比较蠢的方法是通过遍历这两个数组进行对比,查看其差值:

如果测试数据集少的话,这样来比较似乎工作量还不大,要是测试集很大那就没办法了。幸而,sklearn中也提供了对模型的评估方法,所有的评估方法都集成在sklearn.metrics子模块中。针对回归模型,我们可以使用平均绝对误差MAE和均方差MSE以及R2分数来对回归模型评估:

然后在评估方法中传入预测数组和正确数组:

最终得到了我们的平均绝对误差值、均方差值和R2分数。其中,R2分数理论最佳值为1,平均绝对误差理论最佳值为0.0,均方差理论最佳值也为0.0,嗯,这个机器学习随机森林回归模型的效果如何?大家自己评估,也可以自己调用其他的回归模型来测试,看看哪个算法对这个数据集的预测效果较好。

下一篇,我们将创建一个用于分类的预测模型。

分享到:

python数据预测模型算法_Python AI极简入门:4、使用回归模型预测房价相关推荐

  1. python数据预测模型算法_Python机器学习 预测分析核心算法

    第1章关于预测的两类核心算法 1.1为什么这两类算法如此有用 1.2什么是惩罚回归方法 1.3什么是集成方法 1.4算法的选择 1.5构建预测模型的流程 1.5.1构造一个机器学习问题 1.5.2特征 ...

  2. python模型预测_【超级干货!】教你用Python做回归模型预测房价

    原标题:[超级干货!]教你用Python做回归模型预测房价 欢迎关注天善智能 hellobi.com,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习.问答.求职,一站式搞定! 对商业智 ...

  3. python数据预测模型算法_如何对时间序列预测问题计算基准预测(python)

    例程数据下载 建立基准对于时间序列预测问题是及其重要的. 基准效果会告诉你其他模型在解决你的问题的时候的实际效果有多好. 在这个教程中,你会发现如何制作一个persistence预测,用来对时间序列数 ...

  4. python数据预测模型算法_基于机器学习的股票分析与预测模型研究

    摘 要:近年来,随着全球经济与股市的快速发展,股票投资成为人们最常用的理财方式之一.本文研究的主要目标是利用机器学习技术,应用Python编程语言构建股票预测模型,对我国股票市场进行分析与预测.采用S ...

  5. python数据预测模型算法_《python机器学习—预测分析核心算法》:构建预测模型的一般流程...

    参见原书1.5节 构建预测模型的一般流程 问题的日常语言表述->问题的数学语言重述 重述问题.提取特征.训练算法.评估算法 熟悉不同算法的输入数据结构: 1.提取或组合预测所需的特征 2.设定训 ...

  6. python数据趋势算法_Python数据拟合与广义线性回归算法学习

    机器学习中的预测问题通常分为2类:回归与分类. 简单的说回归就是预测数值,而分类是给数据打上标签归类. 本文讲述如何用Python进行基本的数据拟合,以及如何对拟合结果的误差进行分析. 本例中使用一个 ...

  7. python函数五要素_机器学习极简入门

    首先,我们来看下当前机器学习领域招聘市场行情. 上面图例中所有带有"算法"."人工智能"."数据挖掘"."NLP"字样的 ...

  8. 【文末有福利】5个字极简入门朴素贝叶斯模型

    导语:作为理科生或者程序员,引以为傲的除了身上的格子衬衫外,我们还有一样很重要的就是逻辑思维,对于很多事,譬如一些女生的流行观点,我们似乎天然地就喜欢抛出一句"真没逻辑"的评价,这 ...

  9. python画k线图 自定周期_【量化小讲堂- Python、pandas技巧系列】极简方法将日线数据转为周线、月线或其他周期...

    引言: 本系列帖子"量化小讲堂",通过实际案例教初学者使用python.pandas进行金融数据处理,希望能对大家有帮助. 想要快速.系统的学习量化知识,可以参与我与论坛合作开设的 ...

最新文章

  1. day18-Map和Collection应用
  2. python:函数可以返回值--编写脚本计算24 + 34 / 100 - 1023
  3. 2016,成为更好的自己
  4. Scala基础教程(八):模式匹配、正则表达式
  5. 表现层登录的处理逻辑及代码实现
  6. spring-beans模块分析
  7. WinPcap笔记(5):不用回调方法捕获数据包
  8. 校外分散实习(14)
  9. MySQL - ERROR 1406
  10. 韩顺平 2021零基础学Java 学习笔记(1)(自用)
  11. cachecloud部署详细过程
  12. matlab时域采样理论得验证,基于matlab时域采样和频域采样验证毕业设计
  13. 列车停车控制算法及仿真研究
  14. bp神经网络训练过程matlab,bp神经网络训练时间
  15. Kafka 启动报错 AccessDeniedException
  16. 如何看待并夕夕公司离职员工在脉脉上疯狂吐槽前公司?
  17. 开源之夏来啦,欢迎报名 Apache APISIX 项目!
  18. 互联网java常见面试题
  19. 水瓶的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  20. java 企业邮箱_java 企业邮箱群发邮件

热门文章

  1. 2008服务器维护,Windows 2008 R2 服务器维护
  2. qt linux 国际化,多语言,配置CLion管理Qt项目国际化支持
  3. feign调用service_微服务之间的调用(Ribbon与Feign)
  4. 单个对象和多个对象在内存中的结构图
  5. oracle扩容bigfile,Oracle10g BIGFILE表空间带来的好处
  6. leetcode题解75-颜色分类
  7. Webstorm相关设置
  8. [org.hibernate.util.JDBCExceptionReporter] - Cannot load JDBC driver class 'net.
  9. Spring基础——在 Spring Config 文件中基于 XML 的 Bean 的自动装配
  10. DBCC--SHRINKDATABASE