首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
1.1 为何选择机器学习
1.1.1 机器学习能够解决的问题
1.1.2 熟悉任务和数据
1.2 为何选择Python
1.3 scikit-learn
1.4 必要的库和工具
1.4.1 Jupyter Notebook
1.4.2 NumPy
1.4.3 SciPy
1.4.4 matplotlib
1.4.5 pandas
1.4.6 mglearn
1.5 Python 2 与Python 3 的对比
1.7 第 一个应用:鸢尾花分类
1.7.1 初识数据
1.7.2 衡量模型是否成功:训练数据与测试数据
1.7.3 要事第 一:观察数据
1.7.4 构建第 一个模型:k 近邻算法
1.7.5 做出预测
1.7.6 评估模型
2.1 分类与回归
2.2 泛化、过拟合与欠拟合
2.3 监督学习算法
2.3.1 一些样本数据集
2.3.2 k 近邻
2.3.3 线性模型
2.3.4 朴素贝叶斯分类器
2.3.5 决策树
2.3.6 决策树集成
2.3.7 核支持向量机
2.3.8 神经网络(深度学习)
2.4 分类器的不确定度估计
2.4.1 决策函数
2.4.2 预测概率
2.4.3 多分类问题的不确定度
3.1 无监督学习的类型
3.2 无监督学习的挑战
3.3 预处理与缩放
3.3.1 不同类型的预处理
3.3.2 应用数据变换
3.3.3 对训练数据和测试数据进行相同的缩放
3.3.4 预处理对监督学习的作用
3.4 降维、特征提取与流形学习
3.4.1 主成分分析
3.4.2 非负矩阵分解
3.4.3 用t-SNE 进行流形学习
3.5 聚类
3.5.1 k 均值聚类
3.5.2 凝聚聚类
3.5.3 DBSCAN
3.5.4 聚类算法的对比与评估
3.5.5 聚类方法小结
当前位置:
首页>>
技术小册>>
Python机器学习基础教程(上)
小册名称:Python机器学习基础教程(上)
### 2.3.5 决策树 在Python机器学习领域,决策树是一种非常直观且强大的分类与回归方法。它通过模拟人类决策过程来进行数据分析和预测,以树状图的形式展现决策过程及结果。本章节将深入探讨决策树的基本原理、构建过程、关键算法(如ID3、C4.5、CART等)、过拟合处理、剪枝策略以及如何在Python中使用相关库(如scikit-learn)来实现决策树模型。 #### 2.3.5.1 决策树基本原理 决策树是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一个类别(对于分类树)或一个具体值(对于回归树)。决策树通过递归地将数据集分割成更小的子集来构建,直到满足停止条件(如子集中所有样本都属于同一类别,或子集的大小低于预设阈值)。 #### 2.3.5.2 关键算法 **1. ID3算法** ID3算法是最早的决策树学习算法之一,它基于信息增益来选择最佳分裂属性。信息增益衡量了按照某个属性分割数据集后,数据集不确定性的减少程度。信息增益越大,说明该属性对于分类越重要。然而,ID3算法倾向于选择具有大量不同值的属性,这可能导致过拟合。 **2. C4.5算法** C4.5算法是ID3算法的改进版,它使用信息增益比(增益率)作为属性选择的标准,以克服ID3算法倾向于选择具有多值属性的问题。此外,C4.5还实现了对连续属性的处理,通过二分法将连续属性离散化。 **3. CART算法** 分类与回归树(CART)算法既可以用于分类也可以用于回归。在分类问题中,CART使用基尼指数(Gini Impurity)作为划分属性的标准,选择基尼指数最小的属性进行分裂。基尼指数表示数据集中随机抽取两个样本,其类别标记不一致的概率。对于回归问题,CART采用平方误差最小化准则进行特征选择及划分。 #### 2.3.5.3 决策树的构建过程 决策树的构建通常遵循以下步骤: 1. **选择最佳特征进行分割**:根据选定的算法(如ID3、C4.5、CART)计算每个特征的信息增益(或信息增益比、基尼指数),选择最优特征作为当前节点的分裂标准。 2. **分割数据集**:根据最佳特征的每个可能值,将数据集分割成若干个子集,每个子集分配到树的一个子节点上。 3. **递归构建子树**:对每个子节点递归执行步骤1和步骤2,直到满足停止条件(如所有样本属于同一类别,或达到预设的树深度等)。 4. **创建叶节点**:当递归过程无法继续时,当前节点成为叶节点,并标记为当前子集中样本数最多的类别(对于分类问题)或子集中所有样本的均值/中位数(对于回归问题)。 #### 2.3.5.4 过拟合与剪枝 决策树模型容易过拟合,即模型在训练数据上表现良好,但在新数据上泛化能力较差。为了解决这个问题,通常采用剪枝技术来简化决策树,提高模型的泛化能力。 **预剪枝**:在决策树生成过程中,提前停止树的生长。具体方法包括设置树的最大深度、节点的最小样本数、最小信息增益等。 **后剪枝**:首先生成一棵完整的决策树,然后自底向上对非叶节点进行考察,如果将该节点替换为叶节点能带来更好的泛化性能(如通过交叉验证评估),则进行剪枝。 #### 2.3.5.5 Python实现 在Python中,scikit-learn库提供了强大的决策树模型实现,包括`DecisionTreeClassifier`(用于分类)和`DecisionTreeRegressor`(用于回归)。下面是一个使用`DecisionTreeClassifier`进行分类的简单示例: ```python from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import accuracy_score # 加载数据 iris = load_iris() X = iris.data y = iris.target # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 创建决策树模型 clf = DecisionTreeClassifier(random_state=42) clf.fit(X_train, y_train) # 预测 y_pred = clf.predict(X_test) # 评估模型 print(f"Accuracy: {accuracy_score(y_test, y_pred)}") ``` #### 2.3.5.6 总结 决策树作为一种直观且有效的机器学习算法,在分类和回归任务中均有广泛应用。通过选择合适的算法(ID3、C4.5、CART)和合理的剪枝策略,可以有效避免过拟合,提高模型的泛化能力。在Python中,利用scikit-learn库可以方便地实现和评估决策树模型,为数据分析和预测任务提供有力支持。未来,随着数据量和复杂度的增加,决策树模型将继续在机器学习领域发挥重要作用。
上一篇:
2.3.4 朴素贝叶斯分类器
下一篇:
2.3.6 决策树集成
该分类下的相关小册推荐:
Python合辑5-格式化字符串
Python自动化办公实战
Python合辑12-面向对象
Python与办公-玩转Word
Python合辑1-Python语言基础
Python编程轻松进阶(五)
Python编程轻松进阶(二)
Python3网络爬虫开发实战(下)
Python合辑3-字符串用法深度总结
机器学习算法原理与实战
Python数据分析与挖掘实战(上)
Python高性能编程与实战