数据挖掘——关联分析例题代码实现(下)

1.导包

from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules
import pandas as pd

2.读取文件

my_data=pd.read_excel("D:/棒/数据挖掘/basket.xlsx")
df_data=my_data.iloc[:,7:].copy()
df_data.head()

 3.数据显示

my_data.describe()

结果如图:

 4.数据处理:

dict_data={'F':False,'T':True}
df_data['fruitveg']=df_data['fruitveg'].map(dict_data)
df_data['freshmeat']=df_data['freshmeat'].map(dict_data)
df_data['dairy']=df_data['dairy'].map(dict_data)
df_data['cannedveg']=df_data['cannedveg'].map(dict_data)
df_data['cannedmeat']=df_data['cannedmeat'].map(dict_data)
df_data['frozenmeal']=df_data['frozenmeal'].map(dict_data)
df_data['beer']=df_data['beer'].map(dict_data)
df_data['wine']=df_data['wine'].map(dict_data)
df_data['softdrink']=df_data['softdrink'].map(dict_data)
df_data['fish']=df_data['fish'].map(dict_data)
df_data['confectionery']=df_data['confectionery'].map(dict_data)

结果如下:

5.设置支持度求频繁项集

 frequent_itemsets = apriori(df_data,min_support=0.1,use_colnames= True)

frequent_itemsets

结果如下:

 

 6. 

#求关联规则,设置最小置信度为0.15

rules = association_rules(frequent_itemsets,metric = 'confidence',min_threshold = 0.15)

#设置最小提升度

rules = rules.drop(rules[rules.lift <1.0].index)

#设置标题索引并打印结果

rules.rename(columns = {'antecedents':'from','consequents':'to','support':'sup','confidence':'conf'},inplace = True)

rules = rules[['from','to','sup','conf','lift']]

rules

结果如下:

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
当然,我可以为您提供一个关联规则 Apriori 算法的例题。假设我们有一个超市的交易数据集,其中包含了顾客购买的商品清单。以下是一个简化的例子: | 交易ID | 商品清单 | |--------|-------------------------------| | 1 | 牛奶, 蛋糕, 面包 | | 2 | 蛋糕, 面包 | | 3 | 牛奶, 蛋糕, 面包, 鸡蛋 | | 4 | 牛奶, 面包 | | 5 | 牛奶, 蛋糕, 面包, 鸡蛋, 啤酒 | 现在我们想要找出频繁项集和关联规则。 首先,我们需要设置最小支持度和最小置信度的阈值。假设我们设置最小支持度为40%,最小置信度为60%。 1. 计算频繁1-项集:对于每个商品,计算其支持度(在所有交易中出现的次数除以总交易数),并保留支持度大于等于最小支持度阈值的项集。 | 商品 | 支持度 | |---------|----------| | 牛奶 | 4/5 = 80%| | 蛋糕 | 4/5 = 80%| | 面包 | 5/5 = 100%| | 鸡蛋 | 2/5 = 40% | | 啤酒 | 1/5 = 20% | 根据最小支持度阈值,我们保留频繁1-项集:{牛奶, 蛋糕, 面包} 2. 根据频繁1-项集,计算频繁2-项集:对于每对频繁1-项集,计算其支持度,并保留支持度大于等于最小支持度阈值的项集。 | 项集 | 支持度 | |--------------|----------| | {牛奶, 蛋糕} | 3/5 = 60%| | {牛奶, 面包} | 4/5 = 80%| | {蛋糕, 面包} | 4/5 = 80%| 根据最小支持度阈值,我们保留频繁2-项集:{牛奶, 蛋糕},{牛奶, 面包},{蛋糕, 面包} 3. 根据频繁2-项集,计算关联规则:对于每个频繁2-项集,生成所有可能的关联规则,并计算其置信度。保留置信度大于等于最小置信度阈值的关联规则。 对于 {牛奶, 蛋糕}: - 关联规则:{牛奶} => {蛋糕} - 置信度:支持度({牛奶, 蛋糕}) / 支持度({牛奶}) = 3/5 / 4/5 = 0.75 对于 {牛奶, 面包}: - 关联规则:{牛奶} => {面包} - 置信度:支持度({牛奶, 面包}) / 支持度({牛奶}) = 4/5 / 4/5 = 1 对于 {蛋糕, 面包}: - 关联规则:{蛋糕} => {面包} - 置信度:支持度({蛋糕, 面包}) / 支持度({蛋糕}) = 4/5 / 4/5 = 1 根据最小置信度阈值,我们保留关联规则:{牛奶} => {面包},{蛋糕} => {面包} 以上就是使用 Apriori 算法找出频繁项集和关联规则的步骤和结果。希望对您有所帮助!如果您还有其他问,请随时提问。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值