详解python实现FP-TREE进行关联规则挖掘(带有FP树显示功能)附源代码下载(3)

上一节简单讲了下FP树的生成,在这一节我将描述FP树的挖掘过程.

首先我们回顾一下要挖掘的特征项及样本空间:

items=('chips','eggs','bread','milk','beer','popcorn','butter')

sample=[

['milk','eggs','bread','chips'],

['eggs','popcorn','chips','beer'],

['eggs','bread','chips'],

['milk','eggs','bread','popcorn','chips','beer'],

['milk','bread','beer'],

['eggs','bread','beer'],

['milk','bread','chips'],

['milk','eggs','bread','butter','chips'],

['milk','eggs','butter','chips']

]

由于要寻找的关联规则的最小支持度为3,所以butter和popcorn两个特征项就可以首先被忽略掉了,因为它们的支持度都只有2。

根据挖掘的规则,挖掘将从支持度最接近3的特征项开始,即本例中的beer,它的支持度为4.

从图中可以看到beer的节点数为4,于是它有4个条件模式基(CPB):

{eggs,bread,chips:1}

{eggs,bread:1}

{eggs,chips:1}

{bread,milk:1}

生成的FP子树如下图:

(注意:在源代码中,我为milk的FP子树单独生成了一个对象,其实在实际使用中FP树会占用很大的内从空间,所以FP子树一般会利用FP树而不是重新生成,一个可行的办法是将FP树的节点支持度数表示为一个字典,例如{root:7,milk:3}表示该节点在FP树中支持度为7,而在特征项milk的FP子树中支持度为3)

得到FP子树后要进行两步操作:

第一步:将该子树中所有支持度大于3的特征项与milk作并集,得到满足条件的二项集:

(eggs,milk )

(bread,milk )

它们的支持度都为3。

第二步:判断这颗子树是否有必要进一步挖掘,这是难点,也是优化算法的一个方向。

判断的结果有三种:

1. 该树没有任何一个特征项的支持度 >= 3,那么等同于空树,就没有必要挖掘了。

2. 该树是一棵单路径的树。

3. 该树是一棵多路径的树。

情况2和情况3是怎么回事,又该如何处理,请看下节

python中fp是什么意思_详解python实现FP-TREE进行关联规则挖掘(带有FP树显示功能)附源代码下载(3)...相关推荐

  1. python中list[1啥意思_详解Python中list[::-1]的几种用法

    本文主要介绍了Python中list[::-1]的几种用法,分享给大家,具体如下: s = "abcde" list的[]中有三个参数,用冒号分割 list[param1:para ...

  2. python中yaml模块的使用_详解Python yaml模块

    一.yaml文件介绍 yaml是一个专门用来写配置文件的语言. 1. yaml文件规则 区分大小写: 使用缩进表示层级关系: 使用空格键缩进,而非Tab键缩进 缩进的空格数目不固定,只需要相同层级的元 ...

  3. python中filepath路径怎么写_详解Python中的路径问题

    1. 绝对路径引入 Python 在搜索模块时,依次搜索sys.path里的位置,直到找到模块为止.下面命令可以查看当前的搜索路径: import sys print(sys.path) sys.pa ...

  4. python中什么是可变参数_详解Python的三种可变参数

    详解Python的三种可变参数 可变参数 可变参数应该最简单,在C/C++和Java等语言中都有,就是用*号来表示,例如 def testArg(*arg) 你可以传入任意多个元素(包括0)到参数中, ...

  5. python中的符号下划线_详解Python中下划线的使用方法

    编程派微信号:codingpy 这篇文章讨论Python中下划线_的使用.跟Python中很多用法类似,下划线 _ 的不同用法绝大部分(不全是)都是一种惯例约定. 单个下划线(_) 主要有三种情况: ...

  6. python中换行的转义符_详解Python中的各种转义符\n\r\t

    Python中的各种转义符\n\r\t 转义符 描述 \ 续行符(在行尾时) \\ 反斜杠符号 ' 单引号 " 双引号 \a 响铃 \b 退格(Backspace) \e 转义 \000 空 ...

  7. python中怎么做分组问题_详解Python中的分组函数groupby和itertools)

    具体代码如下所示: from operator import itemgetter #itemgetter用来去dict中的key,省去了使用lambda函数 from itertools impor ...

  8. python中完整类的定义_详解Python中类的定义与使用

    类顾名思义,就是一类事物.或者叫做实例,它用来描述具有共同特征的一类事物.我们在python中声明类的关键词是class,类还有功能和属性,属性就是这类事物的特征,而功能就是它能做什么,也是就是方法或 ...

  9. python中for循环怎么打开_详解Python中for循环的使用

    for 循环 本系列前面 "探索 Python,第 5 部分:用 Python 编程" 一文讨论了 if 语句和 while 循环,讨论了复合语句以及适当缩进 Python 语句来 ...

最新文章

  1. 算法笔记之分支限界法
  2. 【构建之法教学项目】一个简单的基于C#的电子商务系统演练场景的代码示例...
  3. mysql学习笔记-insert扩展
  4. chrome里面的一些小技巧
  5. 对listView的理解
  6. GDAL C# “OSGeo.GDAL.GdalPINVOKE”的类型初始值设定项引发异常 解决方法
  7. Citrix XenDesktop 4.0 Setup Wizard crash
  8. [UVA 11374] Airport Express
  9. 运维日常操作--linux命令
  10. 操作系统原理-----进程同步与通信
  11. mybatis分页插件 pagehelper点击末页跳到第8页
  12. WPS OFFICE
  13. spacy词性标注解释【dep、pos、tag】
  14. 面经分享:网友问我,怎样才能在谷歌匹兹堡办公室里写代码?下篇
  15. android自定义拨号键盘,Android拨号键盘增加魔力爱心数字
  16. Laravel 5.5 Eloquent ORM - 快速入门
  17. 苦难是人生最大的财富
  18. 二代征信报告解读及信贷风控中的应用
  19. mysql创建表里主码和外码_SQL语言创建表时候怎么定义主码和外码
  20. 关于51单片机驱动DS18B20代码的感想

热门文章

  1. 用炒菜的思路搞定你的复杂分析
  2. android 个推封装,Android个推快速集成
  3. HTML5及CSS3基础知识(持续更新)
  4. 【听课笔记】复旦大学遗传学_09基因与演化
  5. 遇到”xxxx.app已损坏,打不开,解决方案
  6. D3.js入门基础教程
  7. CSS 行高 line-height属性
  8. 【转载】一些软件设计原则
  9. ZOJ - 4049 Halting Problem 题解【c++】
  10. 关于setTimeout多次点击会多次执行方法导致运行速度加快的问题