利用apyori库的关联规则python代码实现

在学习数据挖掘,刚学到关联规则的apriori算法,老师要求自己写一写。
本着能用库就不自己敲详细代码的原则,找到了这个叫做apyori的库。
自己在CSDN上搜了搜大佬的案例,主要是参考的这个大佬的案例
但是我照着大佬写的还是不能运行,可能是我的数据跟大佬不一致导致的。
在小npy的帮助下改成了下面这样。

import pandas as pd
from apyori import apriori

# 读取原始数据
df = pd.read_excel("excel数据文件路径")

# 数据转换成apriori可处理的形式
# 以列表的形式进行分许
transactions = df.groupby(by='OrderID').apply(lambda x: list(x.CategoryName))

# min_support -- The minimum support of relations (float).
# min_confidence -- The minimum confidence of relations (float).
# min_lift -- The minimum lift of relations (float).
# max_length
min_supp = 0.1  #设定最小支持度
min_conf = 0.1  #设定最小置信度
min_lift = 0.1  #设定最小提升度
# 调用apriori方法,在这里不满足最小支持度、置信度和提升度的项集以及规则会被自动排除
ap = list(apriori(transactions=transactions, min_support=min_supp, 
           min_confidence=min_conf, min_lift=min_lift))  
#实际上关联规则运算到这里就已经完成了,后续的工作是为了使结果能够更好的输出。

#支持度(support),先输入空列表,再进行赋值
supports=[]
#置信度
confidences=[]
#提升度
lifts=[]
#基于项items_base
bases=[]
#推导项items_add
adds=[]


'''
这里用嵌套循环来读取,是因为关联规则运算结果ap实际上是一个多维列表
r是从列表中取出频繁项集,而x是从频繁项集中取出关联规则。
'''
for r in ap:
    for x in r.ordered_statistics:
        supports.append(r.support)
        confidences.append(x.confidence)
        lifts.append(x.lift)
        bases.append(list(x.items_base))
        adds.append(list(x.items_add))

#将结果存储为dataframe
result = pd.DataFrame({
    'support':supports,
    'confidence':confidences,
    'lift':lifts,
    'base':bases,
    'add':adds
})

# 选择支持度大于0.5,自信度大于0.5,提升度大于1
res = result[(result.lift > 1) & (result.support > 0.5) & (result.confidence > 0.5)]

#dataframe输出有时候会省略中间的变量,下面这行代码是为了让它能够全部显示
pd.set_option('display.max_columns',None)  
print(res[:3])  #输出前三个规则

下面是输出的结果的提升度前三的关联规则(我手上这个数据的支持度和置信度都不是很高,是数据的问题)
输出的关联规则结果

发布了1 篇原创文章 · 获赞 2 · 访问量 73

猜你喜欢

转载自blog.csdn.net/qq_37317276/article/details/105165657