今天我们要用python实现的是数据挖掘经典算法, Apriori算法。 这个算法主要用于做数据间的关联分析,专业点的说法就是 发现数据的频繁项集和关联规则。
再举个例子吧: 有一个经典的案例: 啤酒和尿布的故事,成年男性在买尿布的时候会买几瓶啤酒,用我们人的思维来思考的话,这二者并没有什么因果关系。然而通过对海量数据进行关联分析,却能够发现这个有趣的知识,在超市调整货架后,明显的提升了超市啤酒尿布的销量。
啤酒-尿布 关联分析 Apriori算法
网上的例子
在网上搜索一下,可以找到很多apriori算法的例子, 这些例子一般来说存在2个问题:
1)数据集太简单,通常是2-3个字段, 无法让人深入理解这个关联分析算法。
2)实现方法很啰嗦, 没有体现出python语言的强大数据结构的妙用。
所以, 我们今天用一个比较复杂的例子来实现apriori算法。
程序的具体要求
编写Apriori算法程序,平台python2
用Apriori 算法找出频繁项集,可以任意设定最小支持度和置信度。
找出强关联规则以及相应的支持度和置信度
结果输出到txt文本
数据集里的问号的数据不参与计数,可以省略
数据集
138行数据, 字段如下:
userID,smoker,drink_level,dress_preference,ambience,transport,marital_status,hijos,birth_year,interest,personality,religion,activity,color,weight,budget,height
再来看几行数据:
可以看到, 其中有数据是缺失的。
对于缺失的数据,我们可以去掉整行,也可以在关联分析的时候不分析这个缺失的字段。
面对如此多的字段, 如果靠人工的话,很难发现某几个字段有关联关系, 还好我们有高级算法和python语言。
代码
这个编辑器也是无语了, 贴上了代码,格式就乱了。
所以就发几张代码截图吧。
有需要完整代码的朋友,可以大胆私信哟。
运行与输出
在命令行运行python apriori.py 之后, 可以得到频繁项集和强关联规则。
频繁项集有2项集,三项集,一直到8项集。
比如这个2项强关联规则:
marital_status:singleactivity:student0.7753623188410.877049180328
表示未婚和学生存在强关联关系, 最后的两个数字是支持度和置信度。
提问
最后提问一个问题,看大家对这个关联分析算法有没有彻底理解:
频繁项集包括不包括一项集?
领取专属 10元无门槛券
私享最新 技术干货