关联规则与购物车比较

Posted

技术标签:

【中文标题】关联规则与购物车比较【英文标题】:Association rules compare with cart 【发布时间】:2017-07-21 13:47:21 【问题描述】:

下面是一些简单的先验代码

import csv
import apriori

with open('dataset.csv', 'r') as fp:
  reader = csv.reader(fp)
  lst1,lst2 = [],[]
  for row in reader:
    others,last = row[:-1],row[-1]
    lst1.append(others)
    lst2.append(last)

L,suppData=apriori.apriori(lst1, minSupport =0.3)
rules = apriori.generateRules(L,suppData, minConf = 0.3)
rules = sorted(rules, key=lambda x: x[2], reverse=True)

下面是数据集

p1,p2,p3,A
p1,p2,B
p1,p2,C
p1,p2,D
p2,p3,E
p1,p2,p3,F
p1,p3,G

规则的输出看起来像

[(frozenset(['p1']), frozenset(['p2']), 0.8333333333333334), (frozenset(['p2']), frozenset(['p1']), 0.8333333333333334), (frozenset(['p3']), frozenset(['p2']), 0.75), (frozenset(['p3']), frozenset(['p1']), 0.75), (frozenset(['p2']), frozenset(['p3']), 0.5), (frozenset(['p1']), frozenset(['p3']), 0.5)]

什么是查看产品购物车的正确有效方法,它是一个逗号分隔的字符串,如 [p1,p2] 并推荐接下来的 2 个最佳产品。

cart = ['p1','p2']
recommend=[]
for fz in rules:
     if( ",".join(sorted(fz[0])) == ",".join(cart) ):
        recommend.extend(sorted(fz[1]))

上面的代码并不能处理所有条件..

【问题讨论】:

【参考方案1】:

遍历所有关联规则。得到那些包含 p1 和 p2 作为规则左侧频繁项集的关联规则,即 [p1, p2 -> x]。其中 x 是另一个最多两个项目的频繁项集。您也可以使用 [p1 -> x]、[p2 -> x] 等关联规则。现在从这些关联规则中获得最大的支持和最大的信心。最好的情况下,具有最大支持度和置信度的关联规则就是这个关联规则 [p1, p2 -> q1, q2]。 q1、q2 是您要推荐的产品。

【讨论】:

以上是关于关联规则与购物车比较的主要内容,如果未能解决你的问题,请参考以下文章

推荐算法之模型协同过滤(1)-关联规则

商品零售购物篮分析

商品零售购物篮分析

商品零售购物篮分析

商品零售购物篮分析

商品零售购物篮分析