使用mlxtend库中的apriori算法和association_rules函数来进行频繁项集和关联规则的挖掘。
导入所需的库:
from mlxtend.frequent_patterns import apriori, association_rules
from mlxtend.preprocessing import TransactionEncoder
import pandas as pd
定义一个示例的交易数据:
transactions = [
["面包", "牛奶"],
["面包", "尿布", "啤酒", "鸡蛋"],
["牛奶", "尿布", "啤酒", "可乐"],
["面包", "牛奶", "尿布", "啤酒"],
["面包", "牛奶", "尿布", "可乐"]
]
接下来,使用TransactionEncoder将交易数据转换为适合Apriori算法的格式:
encoder = TransactionEncoder()
trans_encoded = encoder.fit(transactions).transform(transactions)
df = pd.DataFrame(trans_encoded, columns=encoder.columns_)
这里使用TransactionEncoder将交易数据编码为一个二维的布尔矩阵,其中每一行代表一笔交易,每一列代表一个可能的商品,如果某个商品在一笔交易中出现,则对应位置为True,否则为False。
然后,应用Apriori算法来找出频繁项集:
frequent_itemsets = apriori(df, min_support=0.6, use_colnames=True)
这里使用apriori函数,传入数据集df和最小支持度(min_support)为0.6。函数会计算出满足最小支持度要求的频繁项集。
最后,使用association_rules函数查找关联规则:
rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.7)
这里使用association_rules函数,传入频繁项集和关联规则的度量(metric)为"confidence",最小置信度(min_threshold)为0.7。函数会根据频繁项集计算出满足最小置信度要求的关联规则。
最后一行代码输出了频繁项集和关联规则的一部分信息:
frequent_itemsets, rules[['antecedents', 'consequents', 'support', 'confidence']]
其中,frequent_itemsets是一个DataFrame,包含频繁项集的支持度和项集的内容。rules是一个DataFrame,包含关联规则的前项、后项、支持度和置信度。通过选择需要的列,输出关联规则的前项、后项、支持度和置信度的信息。
这段代码的目的是通过Apriori算法找出频繁项集,然后根据最小置信度要求找出满足要求的关联规则。这些频繁项集和关联规则可以用于分析交易数据中的商品之间的关联性和推荐系统等应用场景。
杨亚欣
14:34
输出结果包含两部分:频繁项集(frequent_itemsets)和关联规则(rules)的信息。
频繁项集(frequent_itemsets)部分包含以下列:
- support:支持度,表示项集在所有交易中出现的频率。例如,(啤酒)的支持度为0.6,表示啤酒在所有交易中出现的频率为60%。
- itemsets:项集的内容,以元组的形式表示。例如,(啤酒)表示只包含啤酒的项集。
关联规则(rules)部分包含以下列:
- antecedents:前项,表示关联规则的前提条件。以frozenset的形式表示,可以包含一个或多个项。例如,(啤酒)表示前项为啤酒。
- consequents:后项,表示关联规则的结论。以frozenset的形式表示,可以包含一个或多个项。例如,(尿布)表示后项为尿布。
- support:支持度,表示关联规则在所有交易中出现的频率。例如,关联规则(啤酒) -> (尿布)的支持度为0.6,表示该规则在所有交易中出现的频率为60%。
- confidence:置信度,表示关联规则的可信程度。例如,关联规则(啤酒) -> (尿布)的置信度为1.00,表示在包含啤酒的交易中,尿布也会出现。
通过输出结果,我们可以看到:
- 频繁项集部分显示了每个项集的支持度和内容。例如,(啤酒)的支持度为0.6,(尿布, 牛奶)的支持度为0.6。
- 关联规则部分显示了每条关联规则的前项、后项、支持度和置信度。例如,关联规则(啤酒) -> (尿布)的支持度为0.6,置信度为1.00。
这些频繁项集和关联规则的信息可以帮助我们了解交易数据中商品之间的关联关系。例如,可以看到啤酒和尿布的关联规则具有较高的置信度,说明购买啤酒的顾客很可能也购买尿布。这种关联关系可以用于推荐系统、市场篮子分析等应用场景。