Introduction

决策树会让您做出艰难的决定。 有很多树叶的深树将会过拟合,因为每个预测都来自其叶子上只有少数房屋的历史数据。 但是叶子很少的浅树会表现不佳,因为它无法捕获原始数据中的许多区别。

即使在今天,最成熟的建模技术也面临着过拟合和欠拟合之间的这种紧张关系。 但是,许多模型都有聪明的想法,可以带来更好的性能。 我们将以随机森林为例。

随机森林使用许多树,并通过平均每个组树的预测来进行预测。 它通常比单个决策树具有更好的预测准确性,并且与默认参数一起使用效果很好。 如果您继续建模,您可以学习更多具有更好性能的模型,但其中许多模型对获取正确的参数很敏感。

Example

您已经多次看到加载数据的代码,加载后我们有以下变量:

  • train_X
  • val_X
  • train_y
  • val_y

【1】

import pandas as pd# Load data
melbourne_file_path = '../input/melbourne-housing-snapshot/melb_data.csv'
melbourne_data = pd.read_csv(melbourne_file_path)
# Filter rows with missing values
melbourne_data = melbourne_data.dropna(axis=0)
# Choose target and features
y = melbourne_data.Price
melbourne_features = ['Rooms', 'Bathroom', 'Landsize', 'BuildingArea', 'YearBuilt', 'Lattitude', 'Longtitude']
X = melbourne_data[melbourne_features]from sklearn.model_selection import train_test_split# split data into training and validation data, for both features and target
# The split is based on a random number generator. Supplying a numeric value to
# the random_state argument guarantees we get the same split every time we
# run this script.
train_X, val_X, train_y, val_y = train_test_split(X, y,random_state = 0)

我们构建一个随机森林模型,类似于我们在scikit-learn中构建决策树的方式 - 这次使用RandomForestRegressor类而不是DecisionTreeRegressor。

【2】

from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_errorforest_model = RandomForestRegressor(random_state=1)
forest_model.fit(train_X, train_y)
melb_preds = forest_model.predict(val_X)
print(mean_absolute_error(val_y, melb_preds))
202888.18157951365

Conclusion

可能还有进一步改进的空间,但这比250,000的最佳决策树误差有了很大的改进。 有些参数允许您更改随机森林的性能,就像我们更改单个决策树的最大深度一样。 但随机森林模型的最佳特征之一是,即使没有这种调整,它们通常也能合理地工作。

您很快就会学习XGBoost模型,它可以在使用正确的参数进行调整时提供更好的性能(但需要一些技巧才能获得正确的模型参数)。

Your Turn

尝试使用随机森林模型看看对您自己模型的改善。

6.Random Forests相关推荐

  1. R语言使用randomForest包构建随机森林模型(Random forests)、使用importance函数查看特征重要度、使用table函数计算混淆矩阵评估分类模型性能、包外错误估计OOB

    R语言使用randomForest包中的randomForest函数构建随机森林模型(Random forests).使用importance函数查看特征重要度.使用table函数计算混淆矩阵评估分类 ...

  2. Introduction to random forests

    2019独角兽企业重金招聘Python工程师标准>>> 1: Introduction In the past three missions, we learned about de ...

  3. Random Forests

    Random Forests http://www.stat.berkeley.edu/~breiman/RandomForests/

  4. Random Forests C++实现:细节,使用与实验

    Random Forests C++实现:细节,使用与实验 1. 随机森林简介 1.1 算法简介 1.2 随机特性 2. C++实现和使用 2.1 动机 2.2 细节 2.2.1 算法的参数(Hype ...

  5. 统计学中的Bootstrap方法(Bootstrap抽样)用来训练bagging算法,如果随机森林Random Forests

    统计学中的Bootstrap方法(Bootstrap抽样)用来训练bagging算法,如果随机森林Random Forests 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学 ...

  6. 随机森林(Random Forests)介绍

    1.决策树(Decision Tree) 决策树是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别.常见的决策树算法有C4.5.ID3和CART.I ...

  7. 随机森林 (Random Forests) 简单介绍与应用

    1 集成方法(Ensemble methods) 1.1 什么是集成方法 简单来说,集成方法 就是组合多个模型,以获得更好效果. 1.2 两种集成方法 平均法(averaging methods):也 ...

  8. 装袋法(bagging)和随机森林(random forests)的区别

    bagging method 和random forests 一般都是应用在决策树中.这篇文章只讨论bagging method 和random forests 的区别. bagging method ...

  9. 【随机森林】random forests 简单介绍

    Random Forest,顾名思义 Random 就是随机抽取: Forest 就是说这里不止一棵树,而由 一群决策树组成的一片森林 ,连起来就是用随机抽取的方法训练出一群决策树来完成分类任务. R ...

  10. Random Forests原理

    Random Forests原理 分类: 机器学习2012-07-27 15:09 1085人阅读 评论(3) 收藏 举报 randomreference算法测试 转载自:http://lincccc ...

最新文章

  1. SVG中的坐标系统和坐标变换
  2. redis为什么是单线程_面试官:Redis单线程为什么执行效率这么高?
  3. android layout 点击,Tips_Android点击事件(Down、Move、Up)的分发_重写Layout响应拖动事件...
  4. HuggingFace BERT源码详解:基本模型组件实现
  5. CSS清除默认样式,技术详细介绍
  6. NLP之路-Deep Learning in NLP (一)词向量和语言模型
  7. 数据结构和算法———P1 绪论
  8. 深入理解JAVA锁的机制
  9. 求助帖--C++中单引号' '内多个字符是什么意思
  10. 2.4G无线模块(NRF24L01)学习(2)——单片机互相控制LED灯
  11. 怎样理解封装,继承,多态!三者的区别?
  12. 线性回归、岭回归、逻辑回归、聚类
  13. win10电脑插上U盘不显示盘符如何办?
  14. asp毕业设计——基于asp+sqlserver的人力资源管理系统设计与实现(毕业论文+程序源码)——人力资源管理系统
  15. 电池包IPX9K、IPX9测试目的
  16. ensp两个路由的配置(想对全世界说晚安 恰好你就是全世界)
  17. java日志使用笔记
  18. Linux下清理磁盘数据方法
  19. w ndows10装什么浏览器,win10怎么重装ie浏览器
  20. 爱做梦的人-人的特性之一

热门文章

  1. c语言竖等于意思,C语言竖式问题
  2. windows 修改nginx端口号_分享Nginx搭建图片服务器简单实现
  3. python图灵测试_最前沿:基于GAN和RL的思想来训练对话生成,通过图灵测试可期!...
  4. 安装Linux后windows在哪启动,在Linux下安装windows后解决Linux不能启动能问题
  5. libsvm python_LibSVM for Python 使用
  6. kamailio,asteisk,realtime 实现负载均衡(集群)完整配置笔记
  7. 网络编程模型综述 之 多线程模型
  8. Linux之V4L2基础编程
  9. etherpeek nx在网络维护中的应用
  10. 串口输出5v电压_为什么RS485比串口速度快距离远?--谈单端信号与差分信号之差异...