SLIQ算法流程:【数据挖掘课程笔记】
1.数据结构
![]()
主要数据结构有: 1.属性列表 2.类列表
对于一个数据集,每个属性都有一个对应的属性列表。如上图所示,每个属性列表有两列,分别是对应的属性值和类列表中的记录索引。根据不同的索引值,可以获得记录的类别标签。对于连续属性,必须编辑属性列表。
对于类列表,存储的是每条记录对应的类标号以及该记录所在的当前叶子节点。类列表必须位于内存中。
2。算法过程
基尼指数:如果数据集D有n个不同的类,则:
![]()
在属性A下,将数据集拆分为D1和D2,则:
![]()
基尼获取定义:
![]()
![]()
算法思路:扫描所有属性列表。对于每个不同的属性列表,从上到下扫描并计算除当前记录得到的基尼利润。由此可见基尼最大功绩的特点和区别。
从上到下扫描属性列表时,必须使用另一种数据结构——类直方图。类直方图的行按点的左侧和右侧划分,列代表不同的类。如上图所示,当算法检查工资单中的第一条记录时,它首先根据索引找到当前记录所属的叶节点。我们可以看到,当salary = 15时,这条记录属于节点N2。当前节点N2有两条记录。直方图类初始化时,默认不分割这两条记录。因此,节点N2中有两条记录,即索引值为1和索引值为2的记录,从类列表中可以看出,这两条记录分别属于G类和B类。当算法
扫描记录salary=15,实际上是在节点N2上进行了一次试分割。 N2 中工资
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网