网站的管理系统/网站seo课设

网站的管理系统,网站seo课设,网站模板上传教程,世界杯最新排名第5集:决策树与随机森林——直观的分类与回归方法 在机器学习中,决策树(Decision Tree) 和 随机森林(Random Forest) 是两种直观且强大的算法,广泛应用于分类和回归任务。决策树通过一系列规则…

第5集:决策树与随机森林——直观的分类与回归方法

在机器学习中,决策树(Decision Tree)随机森林(Random Forest) 是两种直观且强大的算法,广泛应用于分类和回归任务。决策树通过一系列规则对数据进行划分,而随机森林则是由多棵决策树组成的集成模型,能够显著提升预测性能。今天我们将深入探讨这两种算法的原理,并通过实践部分使用 Wine Quality 数据集 进行分类预测。


决策树的工作机制

什么是决策树?

决策树是一种基于树形结构的监督学习算法,其核心思想是递归地将数据划分为更小的子集,直到满足某种停止条件。每个内部节点表示一个特征测试,每个分支表示测试结果,每个叶节点表示一个类别或输出值。

图1:决策树示意图
(图片描述:一棵简单的决策树,根节点根据某个特征进行划分,中间节点继续划分,最终到达叶节点,叶节点标注为类别标签。)
在这里插入图片描述


决策树的构建过程

  1. 选择最佳划分特征:根据某种准则(如信息增益或基尼指数)选择最优特征。
  2. 递归划分:对每个子集重复上述过程,直到满足停止条件(如达到最大深度或节点纯度足够高)。
  3. 生成叶节点:当划分停止时,生成叶节点并赋予类别或输出值。

信息增益与基尼指数

1. 信息增益

信息增益衡量划分前后数据集的不确定性减少程度。公式如下:
Information Gain = H ( D ) − ∑ v ∈ V ∣ D v ∣ ∣ D ∣ H ( D v ) \text{Information Gain} = H(D) - \sum_{v \in V} \frac{|D_v|}{|D|} H(D_v) Information Gain=H(D)vVDDvH(Dv)
其中:

  • $ H(D) $ 是数据集 $ D $ 的熵。
  • $ D_v $ 是划分后的子集。

熵的计算公式为:
H ( D ) = − ∑ i = 1 n p i log ⁡ 2 ( p i ) H(D) = -\sum_{i=1}^{n} p_i \log_2(p_i) H(D)=i=1npilog2(pi)
其中 $ p_i $ 是第 $ i $ 类样本的比例。

2. 基尼指数

基尼指数衡量数据集的不纯度,越小表示纯度越高。公式如下:
Gini Index = 1 − ∑ i = 1 n p i 2 \text{Gini Index} = 1 - \sum_{i=1}^{n} p_i^2 Gini Index=1i=1npi2

案例:基于信息增益的决策树案例

数据集描述

我们使用一个简单的数据集来说明如何构建决策树。假设我们有以下数据:

天气 (Outlook)温度 (Temperature)湿度 (Humidity)是否打球 (Play)
SunnyHotHighNo
SunnyHotHighNo
OvercastHotHighYes
RainMildHighYes
RainCoolNormalYes
RainCoolNormalNo
OvercastCoolNormalYes
SunnyMildHighNo
SunnyCoolNormalYes
RainMildNormalYes
SunnyMildNormalYes
OvercastMildHighYes
OvercastHotNormalYes
RainMildHighNo

计算信息增益

我们以“天气”为例,计算信息增益。

  1. 整体熵
    H ( D ) = − ( 9 14 log ⁡ 2 9 14 + 5 14 log ⁡ 2 5 14 ) ≈ 0.94 H(D) = -\left(\frac{9}{14} \log_2 \frac{9}{14} + \frac{5}{14} \log_2 \frac{5}{14}\right) \approx 0.94 H(D)=(149log2149+145log2145)0.94

  2. 按“天气”划分后熵

S u n n y : H ( S u n n y ) = − ( 2 5 log ⁡ 2 2 5 + 3 5 log ⁡ 2 3 5 ) ≈ 0.97 Sunny: H(Sunny) = -\left(\frac{2}{5} \log_2 \frac{2}{5} + \frac{3}{5} \log_2 \frac{3}{5}\right) \approx 0.97 SunnyH(Sunny)=(52log252+53log253)0.97
O v e r c a s t : H ( O v e r c a s t ) = 0 (全部为 Y e s ) Overcast: H(Overcast) = 0 (全部为 Yes) OvercastH(Overcast)=0(全部为Yes
R a i n : H ( R a i n ) = − ( 3 5 log ⁡ 2 3 5 + 2 5 log ⁡ 2 2 5 ) ≈ 0.97 Rain: H(Rain) = -\left(\frac{3}{5} \log_2 \frac{3}{5} + \frac{2}{5} \log_2 \frac{2}{5}\right) \approx 0.97 RainH(Rain)=(53log253+52log252)0.97

平均熵:
H ( D ∣ O u t l o o k ) = 5 14 ⋅ 0.97 + 4 14 ⋅ 0 + 5 14 ⋅ 0.97 ≈ 0.69 H(D|Outlook) = \frac{5}{14} \cdot 0.97 + \frac{4}{14} \cdot 0 + \frac{5}{14} \cdot 0.97 \approx 0.69 H(DOutlook)=1450.97+1440+1450.970.69

  1. 信息增益
    I G ( O u t l o o k ) = H ( D ) − H ( D ∣ O u t l o o k ) ≈ 0.94 − 0.69 = 0.25 IG(Outlook) = H(D) - H(D|Outlook) \approx 0.94 - 0.69 = 0.25 IG(Outlook)=H(D)H(DOutlook)0.940.69=0.25

决策树描述

根据信息增益,选择“天气”作为根节点,进一步划分其他特征,最终得到如下决策树:

图2:决策树示例
(图片描述:一棵决策树,根节点为“天气”,分为三个分支(Sunny、Overcast、Rain),每个分支进一步划分湿度或温度,最终到达叶节点,标注为是否打球。)
Root Node: Weather
├── Sunny
│ ├── Humidity
│ │ ├── High: No
│ │ └── Normal: Yes
│ └── Temperature
│ ├── Hot: No
│ └── Mild: Yes
├── Overcast
│ └── Yes
└── Rain
├── Humidity
│ ├── High: No
│ └── Normal: Yes
└── Temperature
├── Cool: Yes
└── Mild: Yes


随机森林的概念及其优势

什么是随机森林?

随机森林是一种基于决策树的集成学习算法,通过构建多棵决策树并将它们的结果进行投票或平均来提高模型的稳定性和准确性。

随机森林的优势

  1. 减少过拟合:通过引入随机性(如随机选择特征和样本),降低单棵树的过拟合风险。
  2. 鲁棒性强:对噪声数据具有较好的容忍能力。
  3. 易于调参:超参数较少,且对默认值通常表现良好。

超参数调优

随机森林的性能受以下超参数影响:

  • n_estimators:森林中树的数量,越多通常效果越好,但会增加计算成本。
  • max_depth:每棵树的最大深度,控制模型复杂度。
  • min_samples_split:分裂节点所需的最小样本数。
  • max_features:每棵树分裂时考虑的最大特征数。

可以通过网格搜索(Grid Search)或随机搜索(Random Search)优化这些超参数。


实践部分:使用随机森林对 Wine Quality 数据集进行分类预测

数据集简介

Wine Quality 数据集包含葡萄酒的化学特性及其质量评分(从 0 到 10)。我们将使用该数据集进行二分类任务,目标是预测葡萄酒是否为高质量(评分 ≥ 7)。

完整代码

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
from sklearn.preprocessing import StandardScaler# 加载数据
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv"
data = pd.read_csv(url, sep=';')# 构建二分类目标变量
data['Quality'] = data['quality'].apply(lambda x: 1 if x >= 7 else 0)# 提取特征和标签
X = data.drop(['quality', 'Quality'], axis=1)
y = data['Quality']# 标准化特征
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)# 分割数据集
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.3, random_state=42)# 构建随机森林模型
model = RandomForestClassifier(random_state=42)# 超参数调优
param_grid = {'n_estimators': [50, 100, 200],'max_depth': [None, 10, 20],'min_samples_split': [2, 5, 10]
}
grid_search = GridSearchCV(model, param_grid, cv=3, scoring='accuracy')
grid_search.fit(X_train, y_train)# 最佳模型
best_model = grid_search.best_estimator_# 预测
y_pred = best_model.predict(X_test)# 评估模型性能
accuracy = accuracy_score(y_test, y_pred)
conf_matrix = confusion_matrix(y_test, y_pred)
class_report = classification_report(y_test, y_pred)print("最佳超参数:", grid_search.best_params_)
print(f"Accuracy: {accuracy:.2f}")
print("Confusion Matrix:")
print(conf_matrix)
print("Classification Report:")
print(class_report)# 特征重要性可视化
feature_importances = best_model.feature_importances_
features = data.drop(['quality', 'Quality'], axis=1).columnsplt.figure(figsize=(10, 6))
plt.barh(features, feature_importances, color='skyblue')
plt.title('Feature Importances in Random Forest', fontsize=16)
plt.xlabel('Importance Score', fontsize=12)
plt.ylabel('Features', fontsize=12)
plt.show()

运行结果

输出结果:
最佳超参数: {'max_depth': None, 'min_samples_split': 2, 'n_estimators': 100}
Accuracy: 0.91
Confusion Matrix:
[[408   6][ 37  19]]
Classification Report:precision    recall  f1-score   support0       0.92      0.99      0.95       4141       0.76      0.34      0.47        56accuracy                           0.91       470macro avg       0.84      0.66      0.71       470
weighted avg       0.90      0.91      0.89       470

图3:特征重要性条形图
(图片描述:水平条形图展示了随机森林模型中各特征的重要性得分,颜色深浅表示特征的重要性高低。)
在这里插入图片描述


总结

本文介绍了决策树和随机森林的基本原理,并通过实践部分展示了如何使用随机森林对 Wine Quality 数据集进行分类预测。希望这篇文章能帮助你更好地理解这两种算法!

下集预告:第6集:支持向量机(SVM)——强大的非线性分类器


参考资料

  • Scikit-learn 文档: https://scikit-learn.org/stable/documentation.html
  • Wine Quality 数据集: https://archive.ics.uci.edu/ml/datasets/Wine+Quality

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

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

相关文章

网站中内嵌腾讯元宝用deepseek

网站中内嵌元宝deepseek <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>BING搜</title> <meta name="description" content="不用学习就G搜索高级语法,即选即用…

draw.io:开源款白板/图表绘制利器

在工作和学习中&#xff0c;我们常常需要绘制各种图表&#xff0c;例如流程图、思维导图、网络拓扑图等等。一款功能强大且易于上手的图表绘制工具可以极大地提高我们的效率。今天&#xff0c;我要向大家推荐一款开源免费的图表绘制工具—— draw.io&#xff0c;并手把手教你如…

基于eBPF的全栈可观测性系统:重新定义云原生环境诊断范式

引言&#xff1a;突破传统APM的性能桎梏 某头部电商平台采用eBPF重构可观测体系后&#xff0c;生产环境指标采集性能提升327倍&#xff1a;百万QPS场景下传统代理模式CPU占用达63%&#xff0c;而eBPF直采方案仅消耗0.9%内核资源。核心业务的全链路追踪时延从900μs降至18μs&a…

图解MySQL【日志】——Binlog

Binlog&#xff08;Binary Log&#xff0c;归档日志&#xff09; 为什么需要 Binlog&#xff1f; Binlog 是 MySQL 中的二进制日志&#xff0c;用于记录数据库的所有写操作&#xff08;INSERT、UPDATE、DELETE 等&#xff09; 1. 主从复制 作用&#xff1a;是 MySQL 主从复…

进程的介绍--进程状态/切换

1.冯 • 诺依曼体系结构 1.1 体系结构 冯•诺依曼结构也称普林斯顿结构&#xff0c;是一种将程序指令存储器和数据存储器合并在一起的存储器结构。数学家冯•诺依曼提出了计算机制造的三个基本原则&#xff0c;即采用二进制逻辑、程序存储执行以及计算机由五个部分组成&#x…

Python开源项目月排行 2025年1月

#2025年1月2025年2月2日1DeepSeek-R1当红炸子鸡&#xff0c;国人之骄傲&#xff01;项目于 2025 年 1 月 20 日正式发布。早期的预览版&#xff08;如 DeepSeek-R1-Lite-Preview&#xff09;则在 2024 年 11 月 20 日亮相。 用途&#xff1a;DeepSeek-R1 是一个开源的推理模型&…

yolov8改进:efficientViT替换YOLOV8主干网络结构

6.1 efficientViT替换YOLOV8主干网络结构 6.1.1 effivientvit EfficientViT 的架构特点 EfficientViT 是一种结合了 Transformer 和卷积网络优点的轻量级模型&#xff0c;它的设计目标是高效地提取图像特征&#xff0c;同时减少计算量。以下是它的关键组成部分&#xff1a; …

Android Studio安装配置及运行

一、下载Android Studio 官网下载&#xff1a;下载 Android Studio 和应用工具 - Android 开发者 | Android Developers 跳转到下载界面&#xff0c;选择同意条款&#xff0c;并点击下载&#xff0c;如图&#xff1a; 二、详细安装 双击下载的文件 三、配置Android Studio …

OpenHarmony分布式数据管理子系统

OpenHarmony分布式数据管理子系统 简介 目录 组件说明 分布式数据对象数据共享分布式数据服务Key-Value数据库首选项关系型数据库标准数据化通路 相关仓 简介 子系统介绍 分布式数据管理子系统支持单设备的各种结构化数据的持久化&#xff0c;以及跨设备之间数据的同步、…

智能算法如何优化数字内容体验的个性化推荐效果

内容概要 在数字内容体验的优化过程中&#xff0c;个性化推荐系统的核心价值在于通过数据驱动的技术手段&#xff0c;将用户需求与内容资源进行高效匹配。系统首先基于用户行为轨迹分析&#xff0c;捕捉包括点击频次、停留时长、交互路径等关键指标&#xff0c;形成对用户兴趣…

超简单理解KMP算法(最长公共前后缀next数组、合并主子串、子串偏移法)

KMP算法理解 最长公共前后缀next合并主子串子串偏移 参考b站&#xff1a;子串偏移、合并主子串 最长公共前后缀next 这个概念是一个trick&#xff0c;帮助我们记录遍历了一遍的数组的相似特性&#xff0c;想出来确实很nb&#xff0c;我也不理解逻辑是怎么想出来的。 字符串的…

github 怎么创建一个私有repository 并从另外一台电脑拉取下来更新

1.github上新建一个repository 设置为private tips删除在这 点setting 然后往下拖动 会有个这里是用来删项目的 2.另外 一台电脑拉取这个repository的时候 需要配置 一个ssh key 这个key的内容生成参考本地电脑的生成 然后在这配置 2.1 生成 SSH 密钥&#xff08;如果还没有…

LangChain 技术入门指南:探索语言模型的无限可能

在当今的技术领域&#xff0c;LangChain 正逐渐崭露头角&#xff0c;成为开发语言模型应用的强大工具。如果你渴望深入了解并掌握这一技术&#xff0c;那么就跟随本文一起开启 LangChain 的入门之旅吧&#xff01; (后续将持续输出关于LangChain的技术文章,有兴趣的同学可以关注…

小米手环7屏幕脱胶维修

前言 本文仅用于记录维修过程&#xff0c;如有不对请指出&#xff0c;非常感谢&#xff01; 参考视频 https://www.bilibili.com/video/BV1wV4y1H71N/?vd_sourcec887ed704029330114b8b207d8164686 胶水链接 常见的T-8000胶水&#xff0c;随便挑了一个送皮筋的 https://d…

自注意力机制和CNN的区别

CNN&#xff1a;一种只能在固定感受野范围内进行关注的自注意力机制。​CNN是自注意力的简化版本。自注意力&#xff1a;具有可学习感受野的CNN。自注意力是CNN的复杂形态&#xff0c;是更灵活的CNN&#xff0c;经过某些设计就可以变为CNN。 越灵活、越大的模型&#xff0c;需要…

上帝之眼——nmap

nmap介绍 Nmap&#xff08;网络映射器&#xff09;是一款广受欢迎的网络探测和安全评估工具&#xff0c;被誉为“上帝之眼”。它以其强大的扫描功能和广泛的应用场景&#xff0c;成为系统管理员和安全专家手中的得力助手。本文将对Nmap进行详细介绍&#xff0c;包括其优点、基本…

Spring Boot 整合 log4j2 日志配置教程

文章目录 前言一、常用日志框架二、配置参数介绍 1. 日志级别2. 输出形式3. 日志格式 3.1 PatternLayout 自定义日志布局 三、Log4j2 配置详解 1. 根节点 Configuration2. Appenders 节点 2.1 Console 节点2.2 File 节点2.3 RollingFile 节点 2.3.1 ThresholdFilter 节点2.3.…

MySQL八股学习笔记

文章目录 一、MySQL结构1.宏观结构1.1.Server层1.2.存储引擎层 2.建立链接-连接器3.查询缓存4.解析SQL-解析器&#xff08;1&#xff09;词法分析&#xff08;2&#xff09;语法分析 5.执行SQL5.1.预处理器 prepare5.2.优化器 optimize5.3.执行器 execute&#xff08;1&#xf…

leetcode876.链表的中间结点

目录 问题描述示例提示 具体思路思路一 代码实现 问题描述 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 题目链接&#xff1a;链表的中间结点 示例 提示 链表的结点数范围是 [1, 100]   1 &…

SpringBoot整合Redis和Redision锁

参考文章 1.Redis 1.导入依赖 <!--Redis依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>org.apache.c…