决策树
1. 简介
"""
简介
一种树形结构
树中每个内部节点表示一个特征的判断
每个分支代表一个判断结果的输出
每个叶节点代表一种分类结果
建立过程
1. 特征选择
选取有较强分类能力的特征
2. 决策树生成
根据选择的特征生成决策树
3. 决策树 易过拟合
采用剪枝的方法缓解过拟合
"""
2. ID3 决策树
"""
ID3 决策树
熵 Entropy
信息论中代表随机变量不确定度的度量
熵越大 数据的不确定性越高 信息越多
熵越小 数据的不确定性越低
信息熵
公式
其中 P(xi) 表示数据中类别出现的概率,H(x) 表示信息的信息熵值
信息增益
概念
特征a对训练数据集D的信息增益 定义为集合D的熵H(D)与特征a给定条件下D的熵(H|a)之差
公式
条件熵
构建流程
1. 计算每个特征的信息增益
2. 使用信息增益最大特征将数据集 拆分为子集
3. 使用该特征作为决策树的一个节点
4. 使用剩余特征对子集重复上述 1 2 3 过程
不足
偏向于选择种类多的特征作为分裂依据
"""
信息熵 公式
信息增益 公式
3. C4.5决策树
"""
信息增益率
信息增益率 = 信息增益 /特征熵
特征熵
本质
特征的信息增益 除以 特征的内在信息
相当于对信息增益进行修正, 增加一个惩罚系数
特征取值个数较多时 惩罚系数较小, 特征取值个数较少时, 惩罚系数较大
惩罚系数: 数据集D以特征a作为随机变量的熵的倒数
"""
信息增益率 公式
特征熵 公式
4. CART决策树
"""
CART决策树
一种决策树模型, 可以用于分类 可以用于回归
回归树: 使用平方误差最小化策略
预测输出的是一个连续值
采用叶子节点里均值作为预测输出
分类生成树: 采用基尼指数最小化策略
预测输出的是一个离散值
采用叶子节点多数类别作为预测类别
基尼值
从数据集D中随机抽取两个样本,其类别标记不一致的概率
Gini(D)值越小,数据集D的纯度越高
基尼指数
选择使划分后基尼系数最小的属性作为最优化分属性
特殊说明
信息增益(ID3)、信息增益率值越大(C4.5),则说明优先选择该特征
基尼指数值越小(CART),则说明优先选择该特征
"""
# 1.导入依赖包
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import classification_report
import matplotlib.pyplot as plt
from sklearn.tree import plot_tree
def titanicCase():
# 2.读数据到内存并预处理
# 2.1 读取数据
taitan_df = pd.read_csv("./data/titanic/train.csv")
print(taitan_df.head()) # 查看前5条数据
print(taitan_df.info) # 查看特性信息
# 2.2 数据处理,确