例5-7
时间: 2023-07-04 09:19:33 浏览: 33
例5-7是讲解Python中使用Scikit-learn库进行决策树分类的示例,代码如下:
```python
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 加载数据
iris = load_iris()
X = iris.data
y = iris.target
# 数据集切分
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
# 构建决策树模型
clf = DecisionTreeClassifier(max_depth=2, random_state=0)
clf.fit(X_train, y_train)
# 预测并计算准确率
score = clf.score(X_test, y_test)
print("Accuracy:", score)
```
这段代码首先加载了鸢尾花数据集,然后使用train_test_split函数将数据集划分为训练集和测试集。接着,使用DecisionTreeClassifier类构建了一个最大深度为2的决策树模型,并使用训练集进行拟合。最后,利用测试集对模型进行评估,并输出准确率。
相关问题
1340:【例3-5】扩展二叉树
扩展二叉树是一种用于表示表达式的数据结构。它是二叉树的一种特殊形式,其中每个节点要么是操作符,要么是操作数。每个操作符节点都有两个孩子节点,分别表示其左子表达式和右子表达式。
例如,对于表达式 "2 + 3 * 4",可以使用扩展二叉树表示如下:
```
+
/ \
2 *
/ \
3 4
```
在扩展二叉树中,加法运算符(+)作为根节点,2作为左孩子,乘法运算符(*)作为右孩子,3作为乘法运算符的左孩子,4作为乘法运算符的右孩子。
通过使用扩展二叉树,可以方便地表示复杂的表达式,并且在计算表达式的值时能够保持正确的运算顺序。
利用实现ID3算法,绘制例7-1决策树
好的,首先我们需要了解一下ID3算法的流程:
1. 计算每个特征的信息增益;
2. 选择信息增益最大的特征作为节点,生成该节点的决策树分支;
3. 对于每个分支,重复步骤1和2,直到所有特征都被用完或者分支已经纯净(只包含一类标记)。
接下来我们来绘制例7-1决策树。
假设有如下数据集:
| 数据编号 | 色泽 | 根蒂 | 敲声 | 纹理 | 是否好瓜 |
| -------- | ---- | ---- | ---- | ---- | -------- |
| 1 | 青绿 | 蜷缩 | 浊响 | 清晰 | 好瓜 |
| 2 | 乌黑 | 蜷缩 | 沉闷 | 清晰 | 好瓜 |
| 3 | 乌黑 | 蜷缩 | 浊响 | 清晰 | 好瓜 |
| 4 | 青绿 | 蜷缩 | 沉闷 | 清晰 | 好瓜 |
| 5 | 浅白 | 蜷缩 | 浊响 | 清晰 | 好瓜 |
| 6 | 青绿 | 稍蜷 | 浊响 | 清晰 | 好瓜 |
| 7 | 乌黑 | 稍蜷 | 浊响 | 稍糊 | 好瓜 |
| 8 | 乌黑 | 稍蜷 | 浊响 | 稍糊 | 坏瓜 |
| 9 | 乌黑 | 稍蜷 | 沉闷 | 稍糊 | 坏瓜 |
| 10 | 青绿 | 硬挺 | 清脆 | 清晰 | 坏瓜 |
| 11 | 浅白 | 硬挺 | 清脆 | 模糊 | 坏瓜 |
| 12 | 浅白 | 蜷缩 | 浊响 | 模糊 | 坏瓜 |
| 13 | 青绿 | 稍蜷 | 浊响 | 稍糊 | 坏瓜 |
| 14 | 浅白 | 稍蜷 | 沉闷 | 稍糊 | 坏瓜 |
| 15 | 乌黑 | 稍蜷 | 浊响 | 清晰 | 好瓜 |
| 16 | 浅白 | 蜷缩 | 浊响 | 模糊 | 好瓜 |
| 17 | 青绿 | 蜷缩 | 沉闷 | 稍糊 | 坏瓜 |
首先我们需要计算每个特征的信息增益,计算方法如下:
1. 计算原始数据集的熵$H(D)$;
2. 对于每个特征$A_i$,计算其条件熵$H(D|A_i)$;
3. 计算信息增益$g(D,A_i)=H(D)-H(D|A_i)$。
根据以上计算方法,可以得到每个特征的信息增益如下:
| 特征 | 信息增益 |
| ---- | -------- |
| 色泽 | 0.083 |
| 根蒂 | 0.324 |
| 敲声 | 0.420 |
| 纹理 | 0.363 |
因此,我们选择信息增益最大的敲声作为根节点,生成该节点的决策树分支。接下来对于每个分支,重复以上步骤,直到所有特征都被用完或者分支已经纯净(只包含一类标记)。最终得到的决策树如下所示:
```
敲声
├─ 浊响
│ ├─ 根蒂
│ │ ├─ 蜷缩 : 好瓜
│ │ └─ 稍蜷 : 坏瓜
│ └─ 色泽
│ ├─ 青绿 : 好瓜
│ ├─ 乌黑 : 好瓜
│ └─ 浅白 : 好瓜
└─ 沉闷 : 坏瓜
```
其中,决策树的每个节点都表示一个特征,每个分支表示该特征的取值,叶子节点表示分类结果。