lxinghua

博客园 首页 新随笔 联系 订阅 管理

一、回顾决策树(分类)

ID3算法构建树模型:每次选取当前最佳的特征类分割数据,并按照该特征的所有可能取值来切分。也就是说,如果一个特征值有4中取值,那么数据将被切分成4份。一旦按某特征切分后,该特征在之后的算法执行过程中将不会再起作用,所以有观点认为这种切分方式过于迅速。

除了切分过于迅速外,ID3算法还存在另一个问题,它不能直接处理连续型特征。只有事先将连续型特征离散化,才能在ID3算法中使用。但这种转换过程会破坏连续型变量的内在特性,也会损失一部分信息。

总结ID3算法缺点:

二、CART算法

1. 什么是CATR?

CART是英文Classification And Regression Tree的简写,又称为分类回归树。从它的名字我们就可以看出,它是一个很强大的算法,既可以用于分类还可以用于回归,所以非常值得我们来学习。

CART算法使用的是二元切分法,这种方法可以通过调整数的构建过程,使其能够处理连续型变量。具体的处理方法是:如果特征值大于给定值就走左子树,否则就走右子树。

CART算法有两步:

决策树生成:递归地构建二叉决策树的过程,基于训练数据集生成决策树,生成的决策树要尽量大;自上而下从根开始建立节点,在每个节点处要选择一个最好的属性来分裂,使得子节点中的训练集尽量的纯;

决策树剪枝:用验证数据集对生成的树进行剪枝并选择最优子树,这时损失函数最下作为剪枝的标准。

不同的算法使用不同的指标来定义“最好”:

2. 衡量指标

先构建一个DataFrame数据集,最后一列为标签。方便后续测试函数。

#导入相关包
import numpy as np
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
#构造数据集
def createDataSet():
  group = np.array([[1, 2],
          [1, 0],
          [2, 1],
          [0, 1],
          [0, 0]])
  labels = np.array([0, 1, 0, 1, 0])
  dataSet = pd.concat([pd.DataFrame(group), pd.DataFrame(labels)],axis=1,
ignore_index=True)
  return dataSet

查看数据集:

2.1 误差率计算函数

2.2 信息熵函数

2.3 Gini指数

三、CART回归树的python实现

1. 找到最佳切分列

2. CART算法实现代码

四、回归树的SKlearn实现

五、树剪枝

1. 预剪枝

2. 后剪枝

六、模型树

1. 模型树叶节点生成函数

2. 模型树实现

七、用树回归进行预测

1. 导入数据集

2. 构建预测函数的辅助函数

3. 回归树的预测结果

4. 模型树的预测结果

5. 标准线性回归的预测结果

八、使用python的Tkinter库创建GUI

1. 用Tkinter创建GUI

2. 集成Matplotlib和Tkinter创建GUI

posted on 2023-06-09 11:40  興華  阅读(14)  评论(0编辑  收藏  举报