【机器学习】决策树模型(个人笔记)

源代码文件请点击此处

多样性指标

基尼杂质指数(Gini Impurity Index)

若集合中包含 m m m 个元素和 n n n 个类别,其中 a i a_i ai 个元素属于第 i i i 个类别,则:

基尼杂质指数 = 1 − p 1 2 − p 2 2 − . . . − p n 2 其中, p i = a i m (表示选择该元素的概率) 基尼杂质指数 = 1 - p_1^2 - p_2^2 - ... - p_n^2 \\ 其中,p_i = \frac{a_i}{m}(表示选择该元素的概率) 基尼杂质指数=1p12p22...pn2其中,pi=mai(表示选择该元素的概率)

【案例 1】{红,红,红,红,红,红,红,红,蓝,蓝}(8 个红球,2 个蓝球)

基尼杂质指数 = 1 − ( 8 10 ) 2 − ( 2 10 ) 2 = 0.32 基尼杂质指数 = 1 - \bigg(\frac{8}{10}\bigg)^2 - \bigg(\frac{2}{10}\bigg)^2 = 0.32 基尼杂质指数=1(108)2(102)2=0.32

【案例 2】{红,红,红,红,蓝,蓝,蓝,黄,黄,绿}(4 个红球,2 个蓝球,2 个黄球,1 个绿球)

基尼杂质指数 = 1 − ( 4 10 ) 2 − ( 3 10 ) 2 − ( 2 10 ) 2 − ( 1 10 ) 2 = 0.70 基尼杂质指数 = 1 - \bigg(\frac{4}{10}\bigg)^2 - \bigg(\frac{3}{10}\bigg)^2 - \bigg(\frac{2}{10}\bigg)^2 - \bigg(\frac{1}{10}\bigg)^2 = 0.70 基尼杂质指数=1(104)2(103)2(102)2(101)2=0.70

基尼指数越低,集合中的元素就越相似(数据集多样性越低)。

熵(Entropy)

若集合中包含 m m m 个元素和 n n n 个类别,其中 a i a_i ai 个元素属于第 i i i 个类别,则:

熵 = − p 1 log ⁡ 2 ( p 1 ) − p 2 log ⁡ 2 ( p 2 ) − . . . − p n log ⁡ 2 ( p n ) 其中, p i = a i m (表示选择该元素的概率) 熵 = - p_1 \log_2(p_1) - p_2 \log_2(p_2) - ... - p_n \log_2(p_n) \\ 其中,p_i = \frac{a_i}{m}(表示选择该元素的概率) =p1log2(p1)p2log2(p2)...pnlog2(pn)其中,pi=mai(表示选择该元素的概率)

【案例 1】{红,红,红,红,红,红,红,红,蓝,蓝}(8 个红球,2 个蓝球)

熵 = − 8 10 log ⁡ 2 ( 8 10 ) − 2 10 log ⁡ 2 ( 2 10 ) = 0.722 熵 = - \frac{8}{10}\log_2 \bigg(\frac{8}{10}\bigg) - \frac{2}{10}\log_2 \bigg(\frac{2}{10}\bigg) = 0.722 =108log2(108)102log2(102)=0.722

【案例 2】{红,红,红,红,蓝,蓝,蓝,黄,黄,绿}(4 个红球,2 个蓝球,2 个黄球,1 个绿球)

熵 = − 4 10 log ⁡ 2 ( 4 10 ) − 3 10 log ⁡ 2 ( 3 10 ) − 2 10 log ⁡ 2 ( 2 10 ) − 1 10 log ⁡ 2 ( 1 10 ) = 1.846 熵 = - \frac{4}{10}\log_2 \bigg(\frac{4}{10}\bigg) - \frac{3}{10}\log_2 \bigg(\frac{3}{10}\bigg) - \frac{2}{10}\log_2 \bigg(\frac{2}{10}\bigg) - \frac{1}{10}\log_2 \bigg(\frac{1}{10}\bigg) = 1.846 =104log2(104)103log2(103)102log2(102)101log2(101)=1.846

熵越低,集合中的元素就越相似(数据集多样性越低)。

决策树的应用

我们所使用的数据集如下:

dataset = pd.DataFrame({
        'x_0': [7, 3, 2, 1, 2, 4, 1, 8, 6, 7, 8, 9],
        'x_1': [1, 2, 3, 5, 6, 7, 9, 10, 5, 8, 4, 6],
        'y': [0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1]})
features = dataset[['x_0', 'x_1']]
labels = dataset['y']

使用基尼指数作为划分标准的决策树如下:

decision_tree = DecisionTreeClassifier(criterion='gini')
decision_tree.fit(features, labels)
decision_tree.score(features, labels)
tree.plot_tree(decision_tree, rounded=True, feature_names=['x_0', 'x_1'], class_names=['0', '1'])

在这里插入图片描述
在这里插入图片描述

使用基尼指数作为划分标准的决策树(划分深度只到第一层)如下:

 decision_tree_depth_1 = DecisionTreeClassifier(criterion='gini', max_depth=1)
decision_tree_depth_1.fit(features, labels)
decision_tree_depth_1.score(features, labels)
tree.plot_tree(decision_tree_depth_1, rounded=True, feature_names=['x_0', 'x_1'], class_names=['0', '1'])

在这里插入图片描述
在这里插入图片描述

相关推荐

  1. 机器学习模型——决策

    2024-06-16 15:48:03       17 阅读
  2. 机器学习决策模型

    2024-06-16 15:48:03       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-16 15:48:03       10 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-16 15:48:03       12 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-16 15:48:03       11 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-16 15:48:03       14 阅读

热门阅读

  1. C++基础语法:指针“进阶“---结点,双重指针

    2024-06-16 15:48:03       10 阅读
  2. 一文读懂什么是双端队列(Double-Ended Queue)?

    2024-06-16 15:48:03       10 阅读
  3. 【计算机信息安全】期末复习

    2024-06-16 15:48:03       8 阅读
  4. 安全测试框架 二

    2024-06-16 15:48:03       8 阅读
  5. Python闯LeetCode--第1题:两数之和

    2024-06-16 15:48:03       7 阅读
  6. btstack协议栈实战篇--HID Mouse LE

    2024-06-16 15:48:03       7 阅读
  7. 单目物体测距

    2024-06-16 15:48:03       9 阅读
  8. text-underline-offset的作用是什么,怎么使用

    2024-06-16 15:48:03       7 阅读
  9. Go日志组件Zap的基本使用

    2024-06-16 15:48:03       9 阅读
  10. CAP和Base

    2024-06-16 15:48:03       7 阅读
  11. HIL测试-车辆模型

    2024-06-16 15:48:03       6 阅读