IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 日常学习记录——决策树根节点的选择 -> 正文阅读

[人工智能]日常学习记录——决策树根节点的选择


1 数据集

本例使用的是经过预处理的模糊数据集,如下所示。其中,C1代表密度属性列,C2代表含糖量属性列,L、N、H分别代表偏低,中等,偏高这三个模糊语义。
预处理数据集

2 根节点的选择

1 信息增益的计算

代码如下:

# 计算数据集的信息熵
def cal_entD(target):
    count_posi_label = 0
    for i in range(len(target)):
        if target[i] == 1:
            count_posi_label = count_posi_label + 1
    p1 = count_posi_label / len(target)
    entD = -(p1 * math.log2(p1) + (1 - p1) * math.log2(1 - p1))
    print(count_posi_label, len(target), p1, entD)

    return entD

也就是完成西瓜书上的这一个过程:计算数据集信息熵

2 计算单列属性信息熵

代码如下:

# 计算单列属性的信息熵,如计算密度=密度_L时的信息熵
def cal_Ak(data, target, index):
    count_Col = 0
    count_posi_label = 0
    for i in range(len(data)):
        if data[i][index] != 0:
            count_Col = count_Col + data[i][index]
            if target[i] == 1:
                count_posi_label = count_posi_label + 1 * data[i][index]
    p1 = count_posi_label / count_Col
    ent1 = -(p1 * math.log2(p1) + (1 - p1) * math.log2(1 - p1))
    DV_D = count_Col / len(data)
    DV_D_Ent = DV_D * ent1

    return Bunch(
        DV_D=DV_D,
        Ent=ent1,
        DV_D_Ent=DV_D_Ent
    )

具体原理见西瓜书第76页。因为我用的是模糊化处理过的数据集,也不知道这么算是否是正确的,但是如果只数个数不考虑隶属度的问题的话,后面的信息增益会变小于0。所以这里分子选择对隶属度进行累加,分母选择了正例个数与隶属度取交集的算法。

3 计算各属性信息增益

代码如下:

	# 计算密度的信息熵及信息增益
    C1_l = cal_Ak(data, label, 0)
    C1_n = cal_Ak(data, label, 1)
    C1_h = cal_Ak(data, label, 2)

    Gain_C1 = EntD - (C1_l.DV_D_Ent + C1_n.DV_D_Ent + C1_h.DV_D_Ent)
    print(Gain_C1)

    # 计算含糖量的信息熵及信息增益
    C2_l = cal_Ak(data, label, 3)
    C2_n = cal_Ak(data, label, 4)
    C2_h = cal_Ak(data, label, 5)

    Gain_C2 = EntD - (C2_l.DV_D_Ent + C2_n.DV_D_Ent + C2_h.DV_D_Ent)
    print(Gain_C2)

运行结果如下,可见C2即含糖量的信息增益最大,所以根节点选择含糖量。
运行结果
注释:
8:数据集包含正例个数 ,17:数据集总数,0.9975:数据集信息熵
0.03416:C1的信息增益
0.23947:C2的信息增益


3 存在问题与反思

虽然对根节点的选择有了一定的理解,但是后续的子节点的选择还是有点困难。目前分析可能有以下两个原因:

1、西瓜数据集强行采用模糊决策树的理论是不太合适的,因为在西瓜书上利用数据集3.0α做例子时,介绍了多变量决策树这一种分类方法。或许了解一下多变量决策树会更好一些。

2、其次,我可能太想构造一个模糊决策树出来了,但是单论模糊理论和决策树理论我都没有掌握的很好,还是要从底层出发,踏踏实实地学才可以。尤其是对模糊论集之间关系的理解与推理。

继续努力吧。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-05-01 15:44:16  更:2022-05-01 15:46:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:52:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码