数据挖掘 | [关联规则] 利用apyori库的关联规则python代码实现

相关文章:
数据挖掘 | [有监督学习——分类] 决策树基本知识及python代码实现——利用sklearn
数据挖掘 | [有监督学习——分类] 朴素贝叶斯及python代码实现——利用sklearn
数据挖掘 | [无监督学习——聚类] K-means聚类及python代码实现——利用sklearn
数据挖掘 | [无监督学习——聚类] 凝聚层次聚类及python代码实现——利用sklearn

在学习数据挖掘,刚学到关联规则的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.01  #设定最小支持度
min_conf = 0.0  #设定最小置信度
min_lift = 0.0  #设定最小提升度
# 调用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
})
result = result[~result['base'].isin(['[]'])]  #删去base为空值的规则


# 选择支持度大于0.1,自信度大于0.3
res = result[(result.lift > 0.0) & (result.support > 0.1) & (result.confidence > 0.3)]
res = res.reset_index(drop=True)   #重置索引

#dataframe输出有时候会省略中间的变量,下面这行代码是为了让它能够全部显示
pd.set_option('display.max_columns',None)  
print('设置支持度大于0.1,置信度大于0.3,', '此时得到的规则总数为:', res.shape[0])
print(res)

res.to_csv('保存路径',index=True)

下面是输出的结果(我手上这个数据的支持度和置信度都不是很高,是数据的问题)
数据挖掘 | [关联规则] 利用apyori库的关联规则python代码实现_第1张图片

你可能感兴趣的:(数据挖掘·初学者)