政安晨:机器学习快速入门(四){pandas与scikit-learn} {随机森林}

咱们将在这篇文章中使用更复杂的机器学习算法。

随机森林

基本定义

随机森林(Random Forest)是一种机器学习算法,属于集成学习(ensemble learning)的一种。它是通过构建多个决策树(即森林)来进行预测和分类的。

随机森林的主要特点是采用了随机采样和随机特征选择的方法,以降低模型的方差和减小过拟合的风险。在随机森林中,对于每个决策树的构建,会从训练集中随机选择一部分样本进行有放回抽样,同时也会随机选择一部分特征进行划分,以减少决策树间的相关性。

在预测时,随机森林通过让每个决策树进行独立的预测,然后根据投票或平均值来决定最终的预测结果。这样可以提高模型的准确性、鲁棒性和稳定性。

随机森林广泛应用于分类、回归和特征选择等领域,其在处理大规模和高维数据时也具有良好的性能。同时,随机森林还能够评估变量的重要性、处理缺失值和处理不平衡数据等问题,因此在实际应用中得到了广泛使用。

做个说明

决策树给你留下了一个困难的决定。一棵包含许多叶子节点的深树会过拟合,因为每个预测都只来自其叶子节点中的少数房屋的历史数据。但是,一棵只有少数叶子节点的浅树表现较差,因为它无法捕捉到原始数据中的许多差异。

即使是当今最复杂的建模技术,也面临着欠拟合和过拟合之间的紧张关系。但是,许多模型有着聪明的想法可以提高性能。我们以随机森林为例进行说明。

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

举个例子

您已经多次看到了加载数据的代码。在数据加载结束时,我们有以下变量:

  • train_X
  • val_X
  • train_y
  • val_y

咱们现在继续使用与前几篇类似的代码:

import pandas as pd# Load data
melbourne_file_path = './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类。

代码如下:

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))

{还是依旧做个说明}

如果大家第一次看到这篇文章,那么搭建环境、前因后果等等都参看我的前三篇文章:

政安晨:机器学习快速入门(一){基于Python与Pandas}icon-default.png?t=N7T8https://blog.csdn.net/snowdenkeke/article/details/136046028政安晨:机器学习快速入门(二){基于Python与Pandas} {建立您的第一个机器学习模型}icon-default.png?t=N7T8https://blog.csdn.net/snowdenkeke/article/details/136047590政安晨:机器学习快速入门(三){pandas与scikit-learn} {模型验证及欠拟合与过拟合}icon-default.png?t=N7T8https://blog.csdn.net/snowdenkeke/article/details/136051177好啦,咱们现在开始执行上述代码:

结论

可能还有进一步改进的空间,但相比于前面几篇看到的最佳决策树误差为250,000,这已经是一个巨大的改进。有一些参数可以改变随机森林的性能,就像我们改变单个决策树的最大深度一样。但是,随机森林模型最好的特点之一是它们通常可以在没有调整的情况下运行得相当合理。

写在最后

作者政安晨用4篇文章的演练帮助大家完成了机器学习的基本入门,但伟大的征程这才刚刚开始,瑰丽的画卷逐渐在您的脚下铺开,人工智能是星辰大海,机器学习是渡海之舟。

如果您想要继续提升机器学习的技能,去参加机器学习竞赛吧,不要认为这个领域是聪明大脑的游戏,其实谁也不比谁苯,机器学习只是让我们的日常生活中碰到的各类问题朝着最优解再做一遍而已。

小伙伴们,加油!

已经是老人家的我期待着你们的好消息!呵呵。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/672787.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTTP2: springboot启用http2

springboot http2应用条件 使用servlet 4.0jdk 9tomcat 9 springboot 开启h2 创建证书 创建脚本: keytool -genkey -keyalg RSA -alias wisely -keystore keystore.jks -storepass pass1234 -validity 4000 -keysize 2048添加springboot配置 server:port: 808…

react+antd+CheckableTag实现Tag标签单选或多选功能

1、效果如下图 实现tag标签单选或多选功能 2、环境准备 1、react18 2、antd 4 3、功能实现 原理: 封装一个受控组件,接受父组件的参数,数据发现变化后,回传给父组件 1、首先,引入CheckableTag组件和useEffect, useMemo, use…

springboot Feign方式注入注解详解

一、FeignClient注解详解 FeignClient是Spring Cloud中用于声明Feign客户端的注解,它使得编写HTTP客户端变得更简单。通过Feign的自动化配置机制,可以很容易地编写HTTP API客户端。以下是FeignClient的详解: 作用:FeignClient注解…

代码随想录算法训练营DAY15 | 二叉树 (2)

一、LeetCode 102 二叉树的层序遍历 题目链接: 102.二叉树的层序遍历https://leetcode.cn/problems/binary-tree-level-order-traversal/ 思路:利用队列的先进先出特性,在处理本层节点的同时将下层节点入队,每次处理一层的节点&…

【力扣】盛最多水的容器,双指针法

盛最多水的容器原题地址 方法一:双指针 如果使用暴力枚举,时间复杂度为,效率太低,会超时。 考虑使用双指针,利用单调性求解。用left和right作为数组height的下标,分别初始化为0和size-1。考虑在区间[lef…

CTF-PWN-堆-【chunk extend/overlapping-2】(hack.lu ctf 2015 bookstore)

文章目录 hack.lu ctf 2015 bookstore检查IDA源码main函数edit_notedelete_notesubmit .fini_array段劫持(回到main函数的方法) 思路格式化字符串是啥呢0x开头或者没有0x开头的十六进制的字符串或字节的转换为整数构造格式化字符串的其他方法 exp 佛系getshell 常规getshell ha…

python实现飞书群机器人消息通知(消息卡片)

python实现飞书群机器人消息通知 直接上代码 """ 飞书群机器人发送通知 """ import time import urllib3 import datetimeurllib3.disable_warnings()class FlybookRobotAlert():def __init__(self):self.webhook webhook_urlself.headers {…

java---查找算法(二分查找,插值查找,斐波那契[黄金分割查找] )-----详解 (ᕑᗢᓫ∗)˒

目录 一. 二分查找(递归): 代码详解: 运行结果: 二分查找优化: 优化代码: 运行结果(返回对应查找数字的下标集合): ​编辑 二分查找(非递归…

神经网络的权重是什么?

请参考这个视频https://www.bilibili.com/video/BV18P4y1j7uH/?spm_id_from333.788&vd_source1a3cc412e515de9bdf104d2101ecc26a左边是拟合的函数,右边是均方和误差,也就是把左边的拟合函数隐射到了右边,右边是真实值与预测值之间的均方…

双5G工业路由器无缝链接物联网世界!

在现代工业领域,随着工业互联网的发展和智能化需求的提升,双5G工业路由器成为了实现工业互联网的关键利器。与传统的有线网络相比,双5G工业路由器具有更高的速度和更低的延迟,能够满足高密度设备连接和大流量数据传输的需求。尤其…

第3章 模板

学习目标 了解模板与模板引擎Jinja2,能够复述模板引擎和模板的作用 掌握模板变量的语法,能够在Jinja2模板中定义模板变量 掌握过滤器的使用,能够在Jinja2模板中使用过滤器过滤模板变量保存的数据 掌握选择结构的使用,能够在Jin…

1、卷积分类器

用 Kera 创建你的第一个计算机视觉模型。 数据集下载地址:链接:https://pan.quark.cn/s/f9a1428cf6e3 提取码:XJcv 文章目录 欢迎来到计算机视觉!简介卷积分类器训练分类器示例 - 训练一个卷积分类器步骤1 - 加载数据步骤2 - 定义预训练基步骤3 - 附加头步骤4 - 训练结论欢…

分享70个行业PPT,总有一款适合您

分享70个行业PPT,总有一款适合您 70个行业PPT下载链接:https://pan.baidu.com/s/1wGxmwmzssJud4ZQmI4IqFQ?pwd8888 提取码:8888 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集整理更不易…

vite项目配置根据不同的打包环境使用不同的请求路径VITE_BASE_URL,包括报错解决

vite环境配置可以看官方文档:环境变量和模式 | Vite 官方中文文档 创建环境配置文件 在项目根目录下面创建.env和.env.production文件,.env是开发环境使用的,.env.production是生产环境使用的。 .env文件: # 基本环境 VITE_APP…

PyTorch 2.2 中文官方教程(二)

在 YouTube 上介绍 PyTorch PyTorch 介绍 - YouTube 系列 原文:pytorch.org/tutorials/beginner/introyt.html 译者:飞龙 协议:CC BY-NC-SA 4.0 介绍 || 张量 || 自动微分 || 构建模型 || TensorBoard 支持 || 训练模型 || 模型理解 作者&a…

数据结构中的时间复杂度和空间复杂度基础

目录 数据结构 数据结构中的基本名词 数据 数据对象 数据元素 数据项 数据类型 数据对象、数据元素和数据项之间的关系 数据结构及分类 逻辑结构 物理结构 算法 算法的特点 算法设计上的要求 算法效率的衡量 时间复杂度 大O渐进表示法 最坏情况和平均情况 常…

R语言学习case10:ggplot基础画图Parallel Coordinate Plot 平行坐标图

step1: 导入ggplot2库文件 library(ggplot2)step2&#xff1a;带入自带的iris数据集 iris <- datasets::irisstep3&#xff1a;查看数据信息 dim(iris)维度为 [150,5] head(iris)查看数据前6行的信息 step4&#xff1a;利用ggplot工具包绘图 plot5 <- ggparcoord(…

Pandas数据预处理之数据标准化-提升机器学习模型性能的关键步骤【第64篇—python:数据预处理】

文章目录 Pandas数据预处理之数据标准化&#xff1a;提升机器学习模型性能的关键步骤1. 数据标准化的重要性2. 使用Pandas进行数据标准化2.1 导入必要的库2.2 读取数据2.3 数据标准化 3. 代码解析4. 进一步优化4.1 最小-最大缩放4.2 自定义标准化方法 5. 处理缺失值和异常值5.1…

HGAME 2024 WEEK 1 :web ezHTTP

题目&#xff1a; 看到这个就知道是文件头伪造 第一想法就是Referer伪造 所以伪造 Referer: vidar.club 然后构造伪造的Referer 然后提示通过那些东西访问页面&#xff0c;User-Agent: 是构造你浏览器访问信息的&#xff0c;所以复制右边那一串替代就好了 然后要求我们从本地…

STM32Cubmax stm32f103zet6 SPI通讯

一、基本概念 SPI 是英语 Serial Peripheral interface 的缩写&#xff0c;顾名思义就是串行外围设备接口。是 Motorola 首先在其 MC68HCXX 系列处理器上定义的。 SPI 接口主要应用在 EEPROM&#xff0c; FLASH&#xff0c;实时时 钟&#xff0c; AD 转换器&#xff0c;还有数…