当前位置:   article > 正文

Apriori算法实例——关联规则的实现_jupyter关联规则代码

jupyter关联规则代码

1、数据载入

(1)在Jupyter下安装Python第三方库

  1. !pip install pandas
  2. !pip install numpy
  3. !pip install scipy
  4. !pip install matplotlib
  5. !pip install scikit-learn
  6. !pip install mlxtend

实验操作图片:

 (2)导入相关模块

  1. import pandas as pd
  2. from mlxtend.preprocessing import TransactionEncoder
  3. from mlxtend.frequent_patterns import apriori
  4. from mlxtend.frequent_patterns import association_rules

实验操作图片: 

 

 (3)导入数据集

  1. dataset=[['牛奶','洋葱','肉豆蔻','芸豆','鸡蛋','酸奶'],
  2. ['莳萝','洋葱','肉豆蔻','芸豆','鸡蛋','酸奶'],
  3. ['牛奶','苹果','芸豆','鸡蛋'],
  4. ['牛奶','独角兽','玉米','芸豆','酸奶'],
  5. ['玉米','洋葱','洋葱','芸豆','冰淇淋','鸡蛋']]

实验操作图片

 

2、频繁项集挖掘

(1)one-hot编码

  1. te=TransactionEncoder()
  2. te_ary=te.fit(dataset).transform(dataset)
  3. df=pd.DataFrame(te_ary,columns=te.columns_)
  4. df

 实验操作图片

(2)计算频繁项集

思考巩固:

['牛奶','洋葱','肉豆蔻','芸豆','鸡蛋','酸奶'] (6项集)

['莳萝','洋葱','肉豆蔻','芸豆','鸡蛋','酸奶'] (6项集)

['牛奶','苹果','芸豆','鸡蛋'] (4项集)

['牛奶','独角兽','玉米','芸豆','酸奶'] (5项集)

['玉米','洋葱','洋葱','芸豆','冰淇淋','鸡蛋'] (6项集)

支持度计数:包含特定项集的个数

例如:{芸豆,洋葱}的支持度计数为3

支持度:包含项集的事务数与总事务数的比值(支持度确定项集的频繁程度)

{芸豆,洋葱}的支持度为\frac 35

芸豆-->洋葱(假设表示为买芸豆的人会买洋葱)

支持度 =  \tfrac{3}{5}(芸豆、洋葱同时出现的概率)

置信度 =  \frac{3}{5}(芸豆、洋葱同时出现的概率占芸豆出现概率的比值)

频繁项集:满足最小支持度阈值的所有项集

3、关联规则挖掘

当最小支持度为50%;最小置信度为50%

  1. frequent_itemsets=apriori(df,min_support=0.5,use_colnames=True)
  2. frequent_itemsets.sort_values(by='support',ascending=False,inplace=True)
  3. print(frequent_itemsets[frequent_itemsets.itemsets.apply(lambda x:len(x))==2])
  4. association_rule=association_rules(frequent_itemsets,metric='confidence',min_threshold=0.5)
  5. association_rule.sort_values(by=’lift’,ascending=False,inplace=Ture)
  6. association_rule

所得频繁项集以及关联规则如下

 

当最小支持度为30%;最小置信度为70%

所得频繁项集以及关联规则如下

 

当最小支持度为30%;最小置信度为80%

所得频繁项集以及关联规则如下

 

 

当最小支持度为50%;最小置信度为90%

所得频繁项集以及关联规则如下

当最小支持度为50%;最小置信度为80%

所得频繁项集以及关联规则如下

 

4、项目总结

问题1:未事先正确操作以下步骤

 

误以为在anaconda的环境变量中添加即可

解决:已正确在Jupyter下安装Python第三方库

问题2:

 

原因:上一步骤中 

 

未打括号就运行,且后面添加之后没有再次运行此步骤。

已解决,并牢记修改之后必须运行一次

5、源代码

  1. !pip install pandas
  2. !pip install numpy
  3. !pip install scipy
  4. !pip install matplotlib
  5. !pip install scikit-learn
  6. !pip install mlxtend
  7. import pandas as pd
  8. from mlxtend.preprocessing import TransactionEncoder
  9. from mlxtend.frequent_patterns import apriori
  10. from mlxtend.frequent_patterns import association_rules
  11. dataset=[['牛奶','洋葱','肉豆蔻','芸豆','鸡蛋','酸奶'],
  12. ['莳萝','洋葱','肉豆蔻','芸豆','鸡蛋','酸奶'],
  13. ['牛奶','苹果','芸豆','鸡蛋'],
  14. ['牛奶','独角兽','玉米','芸豆','酸奶'],
  15. ['玉米','洋葱','洋葱','芸豆','冰淇淋','鸡蛋']]
  16. te=TransactionEncoder()
  17. te_ary=te.fit(dataset).transform(dataset)
  18. df=pd.DataFrame(te_ary,columns=te.columns_)
  19. df
  20. frequent_itemsets=apriori(df,min_support=0.5,use_colnames=True)
  21. frequent_itemsets.sort_values(by='support',ascending=False,inplace=True)
  22. print(frequent_itemsets[frequent_itemsets.itemsets.apply(lambda x:len(x))==2])
  23. association_rule=association_rules(frequent_itemsets,metric='confidence',min_threshold=0.5)
  24. association_rule.sort_values(by=’lift’,ascending=False,inplace=Ture)
  25. association_rule

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/489955
推荐阅读
相关标签
  

闽ICP备14008679号