决策树
决策树是一种常见的监督学习方法,用于分类和回归。
主要思想:将数据递归地按特征分割,构建一个树形结构,表示输入和输出之间的映射关系。
特点:非参数化模型,可以处理数值和分类数据,易于理解和解释。
算法:常用ID3、C4.5、CART等,通过选取最优特征进行数据分割。
- 分割标准:信息增益、GINI指数等,度量分割的好坏。
- 停止条件:没有特征可选或达到树的最大深度。
- 预测:从根节点开始,测试数据在树中传播,直到达叶节点获得预测。
- 剪枝:防止过拟合,后剪枝或预剪枝。
- 集成学习:决策树容易过拟合,通常使用随机森林、GBDT等集成学习方法。
决策树通过递归分割构建树模型,易于理解和解释,是一种常用的基础分类与回归方法。
下面通过鸢尾花数据来进行一个简单的演示:
1 |
|
iris原始数据集存在于scikit-learn数据集模块中,可以通过load_iris()直接导入使用。
- iris.data - 150x4的NumPy数组,包含4个特征,分别是花萼长度、花萼宽度、花瓣长度、花瓣宽度,这里只取前了两个特征
- iris.target - 150x1的NumPy数组,包含每朵鸢尾花对应的类别,0/1/2代表Setosa/Versicolor/Virginica
通过代码提取iris的数据特征和目标值进行训练,得到一个决策树分类器模型clf。
决策树模型clf包含了训练后的树结构,但此时树结构还没有可视化。
使用export_graphviz可以导出决策树的DOT图描述文件。
使用graphviz模块将DOT文件转换为图像格式,如PDF。
所以最终我们得到了可视化的决策树图像iris.pdf。
在决策树的图示中:
gini:表示该节点的基尼系数(Gini index),它衡量了该节点的不纯度,值越小表示样本集合的纯度越高。
samples:表示该节点包含的样本数量。
value:表示该节点包含的不同类别的样本数目,是个数组。
例如在根节点的信息:
gini = 0.667
samples = 150
value = [50, 50, 50]
意义是:
基尼系数为0.667,表示根节点的不纯度较高。
总样本量为150,即包含全部的150朵鸢尾花。
值数组[50, 50, 50]表示共有3类,每类样本数量分别为50。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 悠攸涵泳!
评论