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

机器学习实操 第一部分 机器学习基础 第6章 决策树

机器学习实操 第一部分 机器学习基础 第6章 决策树

内容概要

第6章深入介绍了决策树,这是一种功能强大的机器学习算法,能够处理分类、回归以及多输出任务。决策树通过递归地分割数据集来构建模型,具有易于解释和可视化的特点。本章详细讲解了决策树的训练算法、正则化方法以及在不同任务中的应用。通过理论和实践相结合的方式,读者将掌握如何使用决策树解决实际问题。

在这里插入图片描述

主要内容

  1. 决策树的训练与可视化

    • 构建决策树:使用CART算法训练决策树,通过递归分割数据集来构建树结构。
    • 可视化决策树:使用export_graphviz函数输出树结构,并通过Graphviz工具进行可视化。
  2. 决策树的预测过程

    • 分类任务:从根节点开始,根据特征值递归地向下遍历树,直到到达叶节点,输出叶节点中样本最多的类别。
    • 回归任务:类似地,输出叶节点中样本的平均值作为预测值。
  3. CART算法

    • 分类任务:通过最小化基尼不纯度来选择最优的特征和阈值进行分割。
    • 回归任务:通过最小化均方误差(MSE)来选择最优的特征和阈值进行分割。
  4. 正则化技术

    • 过拟合问题:决策树容易过拟合训练数据,需要通过正则化参数(如max_depthmin_samples_splitmin_samples_leaf等)来限制树的复杂度。
    • 剪枝技术:通过统计检验(如卡方检验)来剪枝不必要的节点,减少过拟合。
  5. 决策树的优缺点

    • 优点:易于解释、可视化,对数据预处理要求低。
    • 缺点:对数据的旋转敏感,容易过拟合,方差较高。
  6. 多输出任务

    • 多输出分类:决策树可以扩展到多输出任务,通过同时预测多个目标变量。

关键代码和算法

6.1 决策树分类

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier, export_graphviz
from graphviz import Source# 加载数据
iris = load_iris(as_frame=True)
X_iris = iris.data[["petal length (cm)", "petal width (cm)"]].values
y_iris = iris.target# 训练决策树分类器
tree_clf = DecisionTreeClassifier(max_depth=2, random_state=42)
tree_clf.fit(X_iris, y_iris)# 可视化决策树
export_graphviz(tree_clf, out_file="iris_tree.dot",feature_names=["petal length (cm)", "petal width (cm)"],class_names=iris.target_names, rounded=True, filled=True)
Source.from_file("iris_tree.dot")

6.2 决策树回归

import numpy as np
from sklearn.tree import DecisionTreeRegressor# 生成非线性数据
np.random.seed(42)
X_quad = np.random.rand(200, 1) - 0.5
y_quad = X_quad ** 2 + 0.025 * np.random.randn(200, 1)# 训练决策树回归器
tree_reg = DecisionTreeRegressor(max_depth=2, random_state=42)
tree_reg.fit(X_quad, y_quad)

6.3 正则化决策树

from sklearn.datasets import make_moons
from sklearn.model_selection import train_test_split# 生成非线性数据
X_moons, y_moons = make_moons(n_samples=150, noise=0.2, random_state=42)# 训练决策树分类器
tree_clf1 = DecisionTreeClassifier(random_state=42)
tree_clf2 = DecisionTreeClassifier(min_samples_leaf=5, random_state=42)
tree_clf1.fit(X_moons, y_moons)
tree_clf2.fit(X_moons, y_moons)# 评估模型
X_moons_test, y_moons_test = make_moons(n_samples=1000, noise=0.2, random_state=43)
print("Unregularized tree accuracy:", tree_clf1.score(X_moons_test, y_moons_test))
print("Regularized tree accuracy:", tree_clf2.score(X_moons_test, y_moons_test))

精彩语录

  1. 中文:决策树是一种强大的机器学习算法,能够处理分类和回归任务。
    英文原文:Decision trees are versatile machine learning algorithms that can perform both classification and regression tasks.
    解释:强调了决策树的多功能性。

  2. 中文:决策树的一个重要特点是它们的预测过程易于解释。
    英文原文:One of the many qualities of decision trees is that they require very little data preparation.
    解释:指出了决策树的一个优势,即对数据预处理要求低。

  3. 中文:CART算法通过最小化基尼不纯度或均方误差来选择最优的分割特征和阈值。
    英文原文:The CART algorithm works by first splitting the training set into two subsets using a single feature k and a threshold t.
    解释:介绍了CART算法的基本原理。

  4. 中文:决策树的过拟合问题可以通过调整正则化参数来缓解。
    英文原文:To avoid overfitting the training data, you need to restrict the decision tree’s freedom during training.
    解释:强调了正则化在决策树训练中的重要性。

  5. 中文:决策树对数据的旋转敏感,因此在某些情况下可能需要进行特征工程。
    英文原文:Decision trees love orthogonal decision boundaries (all splits are perpendicular to an axis), which makes them sensitive to the data’s orientation.
    解释:指出了决策树的一个局限性。

总结

通过本章的学习,读者将掌握决策树的核心概念和应用方法。这些内容包括决策树的训练、可视化、预测过程,以及如何通过正则化技术来避免过拟合。此外,本章还介绍了决策树在分类和回归任务中的应用,以及其优缺点。决策树的透明性和灵活性使其成为许多实际应用中的首选算法。

http://www.xdnf.cn/news/2787.html

相关文章:

  • jmeter-Beashell获取http请求体json
  • 在K8S迁移节点kubelet数据存储目录
  • 道德经解读分析
  • Android 进阶开发:深入掌握 ProgressBar 的使用与高级技巧
  • 文献阅读(三)基于干旱强度和恢复时间的生态系统恢复力评估|《Agricultural and Forest Meteorology》
  • 在 Ubuntu 上离线安装 ClickHouse
  • 【数据结构】图论存储结构深度解析:邻接多重表如何实现无向图O(1)删边?邻接矩阵/链表/十字链对比
  • 无锡哲讯科技:SAP财务系统——赋能企业智慧财务管理
  • 开发iOS App时,我常用的一款性能监控小工具分享
  • 数据库中DDL、DML、DCL的区别是什么?
  • Webug4.0通关笔记04- 第6关宽字节注入
  • 洛谷P12238 [蓝桥杯 2023 国 Java A] 单词分类
  • 从车道检测项目入门open cv
  • 【图片识别成表格】批量图片识别成excel表格,批量识别图片区域文字保存到excel表格,基于WPF和腾讯OCR的识别方案
  • MyBatis 使用 POJO 参数动态查询教程
  • leetcode继续c++10/100
  • UDP数据报和TCP流套接字编程
  • BUUCTF——Online Tool
  • 日本IT行业|salesforce开发语言占据的地位
  • Java后端开发day39--方法引用
  • 如何系统学习音视频
  • gitmodule怎么维护
  • 千问3(Qwen3)模型开源以及初体验
  • 设计模式(工厂模式)
  • Android Studio Profiler
  • 矩阵区域和 --- 前缀和
  • 【计算机视觉】目标检测:深度解析YOLOv5:下一代实时目标检测框架实战指南
  • 《图像采集与处理技术的研究与洞察》
  • 从架构原理到落地实践:Apache SeaTunnel×Cloudberry数据集成全解读
  • SQL命令一:SQL 基础操作与建表约束