当前位置: 首页 > news >正文

机器学习之随机森林(五)

机器学习之随机森林(五)


文章目录

  • 机器学习之随机森林(五)
  • 集成学习与随机森林算法详解
    • 一、集成学习概述
      • 主要类型
      • Bagging典型流程
    • 二、随机森林原理
      • 核心特点
    • 三、Sklearn API详解
      • 关键参数
    • 四、实战案例:泰坦尼克生存预测
      • 1. 数据准备与预处理
      • 2. 模型训练与调优
      • 3. 模型评估
    • 五、关键要点总结


集成学习与随机森林算法详解

一、集成学习概述

集成学习(Ensemble Learning)通过组合多个分类器,构建预测效果更好的集成分类器。类比"三个臭皮匠,赛过诸葛亮"。

主要类型

  • Bagging:并行训练多个基学习器
  • Boosting:串行训练,后续模型修正前序模型的错误
  • Stacking:用元学习器组合多个基学习器

Bagging典型流程

  1. 有放回地抽取n个训练样本
  2. 训练M个子模型
  3. 分类问题采用投票法确定最终结果

二、随机森林原理

随机森林示意图

核心特点

  • 随机性
    • 样本随机:有放回抽样(Bootstrap)
    • 特征随机:每次随机选择k个特征(k<d)
  • 森林结构:多个决策树构成
  • 优势
    • 处理高维特征无需降维
    • 通过平均/投票提高精度,控制过拟合

三、Sklearn API详解

class sklearn.ensemble.RandomForestClassifier(n_estimators=100,          # 树的数量criterion='gini',           # 划分标准:"gini"或"entropy"max_depth=None,             # 树的最大深度...
)

关键参数

参数说明
n_estimators森林中决策树的数量
criterion划分算法:"gini"基尼系数/"entropy"信息增益
max_depth树的最大深度限制

四、实战案例:泰坦尼克生存预测

1. 数据准备与预处理

import pandas as pd
from sklearn.feature_extraction import DictVectorizer# 数据加载
titanic = pd.read_csv("src/titanic/titanic.csv")
x = titanic[["pclass", "age", "sex"]]
y = titanic["survived"]# 数据处理
x["age"].fillna(x["age"].mean(), inplace=True)  # 年龄缺失值填充
x = x.to_dict(orient="records")  # 转为字典格式

2. 模型训练与调优

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV# 特征转换
transfer = DictVectorizer()
x_train = transfer.fit_transform(x_train)# 网格搜索调参
param_dict = {"n_estimators": [120,200,300,500,800,1200],"max_depth": [5,8,15,25,30]
}
estimator = GridSearchCV(RandomForestClassifier(),param_grid=param_dict,cv=3  # 3折交叉验证
)
estimator.fit(x_train, y_train)

3. 模型评估

# 最佳参数输出
print("最佳参数:", estimator.best_params_)
print("最佳准确率:", estimator.best_score_)# 测试集评估
score = estimator.score(x_test, y_test)
print("测试集准确率:", score)

五、关键要点总结

  1. 随机森林通过双重随机性(样本+特征)增强多样性
  2. 典型超参数需调优:
    • 树的数量(n_estimators)
    • 树深度(max_depth)
    • 划分标准(criterion)
  3. 网格搜索+交叉验证是调参的有效方法
  4. 适用于高维数据,兼具准确性和抗过拟合能力

相关文章:

  • vue3 el-table 行号
  • 鸿蒙进阶——驱动框架UHDF 机制核心源码解读(一)
  • 虚幻基础:摄像机
  • NHANES最新指标推荐:α-Klotho
  • 从微积分到集合论(1630-1910)(历史简介)——第2章——牛顿(Newton)和莱布尼兹(Neibniz)以及莱布尼兹传统(H.J.M.Bos)
  • 深入浅出Java-Lambda表达式
  • 「AR智慧应急」新时代:当AR眼镜遇上智能监控,打造立体化应急指挥系统
  • 14、自动配置【源码分析】-初始加载自动配置类
  • 【web全栈】若依框架B站学习视频:基础篇01-04
  • 洛谷P1226 【模板】快速幂
  • 【优秀三方库研读】在 quill 开源库 LogMarcos.h 中知识点汇总及讲解
  • 【flash】如何区分flash是哪家的
  • 基于51单片机的温湿度报警LCD1602液晶显示设计( proteus仿真+程序+设计报告+讲解视频)
  • 【Linux】了解 消息队列 system V信号量 IPC原理
  • MySQL EXPLAIN 使用详解与执行计划分析优化
  • 数字化,一个泛化的概念
  • yum命令介绍
  • Javascript 编程基础(4)函数 | 4.3、apply() 与 call() 方法
  • Enhanced RTMP H.265(HEVC)技术规格解析:流媒体协议的新突破
  • 如何支持Enhanced RTMP H.265(HEVC)
  • 简易网站开发时长/好看的网站ui
  • 局域网站建设/今天今日头条新闻
  • 岳阳网站建设方案/百度指数的主要用户是
  • 开发公司企业管理制度/排名优化公司
  • 做拼货商城网站/企业网络营销推广方案策划