换友情链接的网站,网站做任务给钱的,宿迁网页设计培训,海南建设网站公司目录 引言
ID3算法概述
算法基础
信息熵
编辑 信息增益
ID3算法步骤
决策树
概念:
核心#xff1a;
节点
1. 根节点
2. 非叶子节点
3. 叶子节点 引言
在机器学习领域#xff0c;决策树是一种非常流行的分类和回归方法。其中#xff0c;ID3算法作为决策树算法…目录 引言
ID3算法概述
算法基础
信息熵
编辑 信息增益
ID3算法步骤
决策树
概念:
核心
节点
1. 根节点
2. 非叶子节点
3. 叶子节点 引言
在机器学习领域决策树是一种非常流行的分类和回归方法。其中ID3算法作为决策树算法中的经典之作自其提出以来就备受关注。本文将详细介绍ID3算法的原理、步骤、应用以及优缺点帮助读者深入理解这一强大的分类工具。 ID3算法概述
ID3算法Iterative Dichotomiser 3是由澳大利亚计算机科学家Ross Quinlan在1986年提出的一种决策树学习算法。它基于信息论中的熵和信息增益的概念通过递归地选择最佳属性来划分数据集从而构建决策树。ID3算法的核心思想是通过选择最能降低数据不确定性的属性来进行划分直到所有数据都属于同一类别。
算法基础
信息熵
信息熵是度量数据集中不确定性的一个指标其值越大表示数据集的不确定性越高数据集的混乱程度越高。对于具有n个类别的数据集U其信息熵H(U)可以定义为 其中pi是U中第i个类别出现的概率。
例 信息增益
信息增益是衡量某个属性对数据集分类能力的一个指标。对于数据集D和属性AA的信息增益Gain(U,A)可以定义为
Gain(U,A)H(U)−∑v∈V∣U∣∣Uv∣H(Uv)
其中V是属性A的所有可能值Uv是D中在属性A上取值为v的子集。
ID3算法步骤
计算信息熵首先计算整个数据集D的信息熵H(D)。计算信息增益对于每个属性A计算其信息增益Gain(D,A)。选择最佳属性选择信息增益最大的属性作为当前节点的分裂属性。划分数据集根据选定的属性A的不同取值将数据集D划分为若干个子集。递归构建决策树对每个子集递归地执行步骤1-4直到满足停止条件如所有实例属于同一类别或没有更多属性可供划分。 决策树
概念: 决策树通过对训练样本的学习并建立分类规则然后依据分类规则对新样本数据进行分类预测属于有监督学习。
核心 所有数据从根节点一步一步落到叶子节点。 节点 1. 根节点
定义决策树的根节点是整棵树的起点也是第一个进行特征判断的节点。它代表了决策过程的开始是后续所有分支和节点的基础。作用根节点根据训练数据集中最具分类能力的特征进行划分从而引导数据流向不同的子节点。
2. 非叶子节点
定义非叶子节点是决策树中除了根节点和叶子节点以外的所有节点。它们位于根节点和叶子节点之间每个非叶子节点都代表了一个特征判断或决策规则。特点 入边与出边非叶子节点通常有一条入边来自其父节点和两条或多条出边指向其子节点。这些边代表了特征的不同取值或决策结果的不同方向。决策规则每个非叶子节点都包含对某个特征的测试条件用于将数据集分割成更小的子集。这些决策规则是由已知数据集计算而得的旨在减少数据集的不确定性。作用非叶子节点通过不断的特征判断和决策规则应用逐步将数据集细化为最终的分类或回归结果奠定基础。
3. 叶子节点
定义叶子节点是决策树中的末端节点表示分类或回归的最终结果。在分类问题中每个叶子节点都对应一个类别标签在回归问题中每个叶子节点则对应一个具体的数值预测。特点 无出边叶子节点只有一条入边来自其父节点没有出边。这意味着叶子节点是决策过程的终点不再进行进一步的特征判断或决策规则应用。分类或回归结果每个叶子节点都包含了一个明确的分类或回归结果这是决策树对输入数据的最终预测。生成条件叶子节点的生成通常基于两个条件一是无法进一步分割数据集即所有样本都属于同一类别或具有相同的特征值二是达到了预设的停止条件如节点中的样本数小于某个阈值、树的深度达到了预设的最大值等。
综上所述决策树的根节点、非叶子节点和叶子节点共同构成了决策树的结构通过不断的特征判断和决策规则应用实现了对输入数据的分类或回归预测。
例
import pandas as pd
from sklearn.tree import DecisionTreeClassifier, plot_tree
import matplotlib.pyplot as plt# 假设的数据集从图片中猜测的
data {Outlook: [sunny, sunny, overcast, rainy, rainy, rainy, overcast, sunny, sunny, rainy, sunny,overcast, overcast, rainy],Temperature: [hot, hot, hot, mild, cool, cool, cool, mild, cool, mild, mild, mild, hot,mild],Humidity: [high, high, high, high, normal, normal, normal, high, normal, normal, normal,high, normal, high],Wind: [weak, strong, weak, weak, weak, strong, strong, weak, weak, weak, strong, strong,weak, strong],PlayTennis: [no, no, yes, yes, yes, no, yes, no, yes, yes, yes, yes, yes, no]
}# 将数据转换为DataFrame
df pd.DataFrame(data)# 将类别数据转换为数值型数据scikit-learn要求
df pd.get_dummies(df, drop_firstTrue) # 使用one-hot编码# 分离特征和标签
X df.drop(PlayTennis_yes, axis1)
y df[PlayTennis_yes]# 创建决策树模型
clf DecisionTreeClassifier(criterionentropy) # 使用熵作为分裂标准类似于ID3的信息增益
clf.fit(X, y)# 绘制决策树
plt.figure(figsize(20, 10))
plot_tree(clf, filledTrue, feature_namesX.columns, class_names[no, yes])
plt.show() 运行结果