机器学习——随机森林

随机森林

随机森林

1、集成学习方法

通过构造多个模型组合来解决单一的问题。它的原理是生成多个分类器/模型,各自独立的学习和做出预测。这些预测最后会结合成组合预测,因此优于任何一个单分类得到的预测。

2、什么是随机森林?

随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。
随机:设训练集有N个样本,M个特征
1)训练集随机 (采用bootstrap,即采用随机有放回抽样方法),从训练集里随机有放回的抽取N个样本
2)特征随机生成(从M个特征中随机抽取m个特征, M >> m)
森林:指由多棵决策树构成

3、API调用

在sklearn中,提供了随机森林的API,如下

sklearn.ensemble.RandomForestClassifier(n_estimator= 10, criterion='gini', max_depth=None, bootstrap = True,random_state =None, max_features='auto')
"""
n_estimator:预估器个数,即决策树数量
criterion:分割特征的测量方法,默认为基尼系数
max_depth:最大深度,即分类层数
bootstrap:默认为True,是否在构建树的时候有放回抽样
max_features:每个决策树的最大特征数量,如果设置为auto,则m=sqrt(M),M表示样本数量
"""

4、随机森林实例–预测泰坦尼克号生存乘客生存率

参数介绍:pclass表示客舱等级(间接反映乘客阶级),survived表示是否存活,后面依次表示姓名,年龄,乘客登船港口,家庭住址,房间号,船票1号码,boat表示是否登上救生艇,登上了则显示对应救生艇编号,空值表示没有登上,sex为性别

import pandas as pd
data = pd.read_csv(r'E:\Python_learning\py基础\machine_learning\titanic\titanic.csv')
# 筛选关键因素

data数据集前5行

# 选取特征列
features = data[['pclass','age','boat','sex']]
target = data['survived']
# 先查看有无缺失值
pd.isnull(features).any()   # 发现年龄、是否乘坐救生舱有空值

在这里插入图片描述

# 填补空缺值
features.fillna({'age':features['age'].mean()},inplace=True)
# 转换为字典
features = features.to_dict(orient='records')
# 使用字典特征抽取,转化成one-hot编码
from sklearn.feature_extraction import DictVectorizer
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(features,target)
transfer = DictVectorizer(sparse=False)
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)
from sklearn.ensemble import  RandomForestClassifier
from sklearn.model_selection import GridSearchCV
estimator = RandomForestClassifier()
para_dict={"n_estimators":[120,200,300,500,800,1200], 'max_depth':[5,8,15,25,30]}
estimator = GridSearchCV(estimator,  param_grid=para_dict, cv=4)
estimator.fit(x_train,y_train)
y_predict = estimator.predict(x_test)
print(f"模型准确率为:{estimator.score(x_test, y_test)}")
print("最佳参数为:", estimator.best_params_)
print("最佳准确率为:\n", estimator.best_score_)
print("最佳估计器为:\n", estimator.best_estimator_)
print("交叉验证结果:\n", estimator.cv_results_)

在这里插入图片描述

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

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

相关文章

[数据结构] 排序#插入排序希尔排序

标题:[数据结构] 排序#插入排序&希尔排序 水墨不写bug 目录 (一)插入排序 实现思路: 插入排序实现: (二)希尔排序 希尔排序的基本思想: 希尔排序的实现: 正…

IT入门知识第八部分《人工智能》(9/10)

1.引言 在当今数字化时代,人工智能(AI)和机器学习(ML)已成为推动技术革新的关键力量。它们不仅改变了我们与机器的互动方式,还极大地拓展了解决问题的可能性。本文将深入探讨人工智能和机器学习的基础&…

KDTree 简单原理与实现

介绍 K-D树是一种二叉树的数据结构,其中每个节点代表一个k维点,可用于组织K维空间中的点,其中K通常是一个非常大的数字。二叉树结构允许对多维空间中的点进行非常有效的搜索,包括最近邻搜索和范围搜索,树中的每个非叶…

Java毕业设计 基于SSM vue新生报到系统小程序 微信小程序

Java毕业设计 基于SSM vue新生报到系统小程序 微信小程序 SSM 新生报到系统小程序 功能介绍 学生 登录 注册 忘记密码 首页 学校公告 录取信息 录取详情 师资力量 教师详情 收藏 评论 用户信息修改 宿舍安排 签到信息 在线缴费 教室分配 我的收藏管理 我要发贴 我的发贴 管理…

【基于R语言群体遗传学】-7-遗传变异(genetic variation)

一些新名词 Continuous time: 连续时间,是指不间断流动的时间,不以单位时间形式出现。 Diffusion: 扩散,是指粒子从高浓度区域向低浓度区域的被动净移动。 Discrete time: 离散时间,是指被划分为单位的时间,例如每个…

动手学深度学习(Pytorch版)代码实践 -计算机视觉-48全连接卷积神经网络(FCN)

48全连接卷积神经网络(FCN) 1.构造函数 import torch import torchvision from torch import nn from torch.nn import functional as F import matplotlib.pyplot as plt import liliPytorch as lp from d2l import torch as d2l# 构造模型 pretrained…

Python内存优化的实战技巧详解

概要 Python是一种高级编程语言,以其易读性和强大的功能而广受欢迎。然而,由于其动态类型和自动内存管理,Python在处理大量数据或高性能计算时,内存使用效率可能不如一些低级语言。本文将介绍几种Python内存优化的技巧,并提供相应的示例代码,帮助在开发中更高效地管理内…

Banana Pi BPI-M4 Berry创建热点和设置静态IP

create_ap是一个帮助快速创建Linux上的WIFI热点的脚本,并且支持bridge和NAT模式,能够自动结合hostapd, dnsmasq和iptables完成WIFI热点的设置,避免了用户进行复杂的配置,github地址如下: https://github.com/oblique/…

时钟系统框图(时钟树)解析

时钟系统框图(时钟树)解析 文章目录 时钟系统框图(时钟树)解析1、时钟树2、 4个时钟源:$HSI、HSE、LSI、LSE$3、PLL锁相环倍频输出4、系统时钟的来源5、Enable CSS(时钟监视系统)6、几个重要的时…

微软与OpenAI/谷歌与三星的AI交易受欧盟重点关注

近日,欧盟委员会主管竞争事务的副主席玛格丽特维斯塔格(Margrethe Vestager)在一次演讲中透露,欧盟反垄断监管机构将就微软与OpenAI的合作,以及谷歌与三星达成的AI协议寻求更多第三方意见。这意味着微软与 OpenAI、谷歌与三星的 AI 交易及合作…

杰理科技AD142A语音芯片,语音玩具方案—云信通讯

语音玩具产品市场的需求量比较大,从前简单的发光玩具,到各种动作的电子玩具,再到如今的语音录音灯光动作玩具,可见玩具行业也是在不断地演变。 杰理语音芯片AD142A4的优势主要是支持录音、录变音、语音播放,广泛应用于…

【Android】Android基础--显式Intent和隐式Intent

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

【数据结构】常见四类排序算法

1. 插入排序 1.1基本思想: 直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 。实际中我们…

SQL Server 2022数据库对象

《SQL Server 2022从入门到精通(视频教学超值版)》图书介绍-CSDN博客 数据库对象是数据库的组成部分,数据表、视图、索引、存储过程以及触发器等都是数据库对象。 (1)数据库的主要对象是数据表,数据表是一…

深圳航空顶象验证码逆向,和百度验证码训练思路

声明(lianxi a15018601872) 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 前言(lianxi a…

encrypt decrypt CA

encrypt & decrypt & CA 加密解密证书

基于java+springboot+vue实现的大学生就业需求分析系统(文末源码+Lw)233

摘 要 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自…

A股继续3000以下震荡,而国外股市屡创新高,人民币反弹能带动A股吗?

今天的A股,让人愤愤不已,你知道是为什么吗?盘面上出现3个耐人寻味的重要信号,一起来看看: 1、今天两市一度回踩2920点,让股民的心都开始悬起来了。而午后市场行情有了转变,下跌的股票开始明显变…

在centos7上部署mysql8.0

1.安装MySQL的话会和MariaDB的文件冲突,所以需要先卸载掉MariaDB。查看是否安装mariadb rpm -qa | grep mariadb 2. 卸载mariadb rpm -e --nodeps 查看到的文件名 3.下载MySQL安装包 MySQL官网下载地址: MySQL :: Download MySQL Community Serverhttps://dev.mys…

c/c++ 程序运行的过程分析

c/c编译基础知识 GNU GNU(GNU’s Not Unix!)是一个由理查德斯托曼(Richard Stallman)在1983年发起的自由软件项目,旨在创建一个完全自由的操作系统,包括操作系统的内核、编译器、工具、库、文本编辑器、邮…