python的apriori实例
时间: 2023-09-04 08:15:15 浏览: 98
以下是一个简单的Python Apriori算法实例,用于挖掘购物篮数据集中的频繁项集:
```python
# 导入所需的库
import pandas as pd
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules
# 读取数据集
data = pd.read_csv('basket_data.csv')
# 对数据进行one-hot编码处理
data_encoded = pd.get_dummies(data)
# 使用Apriori算法挖掘频繁项集
freq_items = apriori(data_encoded, min_support=0.03, use_colnames=True)
# 使用关联规则挖掘频繁项集之间的关联关系
rules = association_rules(freq_items, metric="lift", min_threshold=1)
# 输出结果
print(freq_items)
print(rules)
```
在这个例子中,我们首先读取了一个名为basket_data.csv的购物篮数据集,并将其进行了one-hot编码处理。然后,我们使用Apriori算法发现了频繁项集,并使用关联规则挖掘了这些频繁项集之间的关联关系。最后,我们输出了结果,包括频繁项集和关联规则。
相关问题
python的Apriori实例结果
由于Apriori算法是一种关联规则挖掘算法,通常用于分析数据集中的频繁项集及其关联关系。因此,具体实例结果需要先确定数据集以及关联规则的定义。
下面以一个简单的示例说明Apriori算法的实现过程和结果。
数据集:
假设有一个购物清单数据集,其中包含了5个顾客的购买物品记录,如下所示:
```
1. 牛奶,面包,鸡蛋
2. 小麦,牛奶,面包,鸡蛋
3. 牛奶,面包
4. 小麦,牛奶,鸡蛋
5. 面包,鸡蛋
```
关联规则定义:
假设我们定义一个关联规则:如果一个顾客购买了牛奶和面包,那么他们很可能会购买鸡蛋。
Apriori算法的实现过程:
1. 对数据集进行处理,将每个物品看作一个项,得到所有的项集。
2. 计算每个项集的支持度,即该项集在数据集中出现的频率。
3. 选取支持度大于等于设定阈值的项集,作为频繁项集。
4. 根据频繁项集,生成候选规则。
5. 计算每个规则的置信度,即规则中的后项在前项条件下出现的概率。
6. 选取置信度大于等于设定阈值的规则,作为强关联规则。
实例结果:
在本例中,设定支持度阈值为2,置信度阈值为0.8。
1. 计算项集的支持度
| 项集 | 支持度 |
| ---------- | ------ |
| {牛奶} | 4 |
| {面包} | 4 |
| {鸡蛋} | 3 |
| {小麦} | 2 |
| {牛奶,面包} | 3 |
| {牛奶,鸡蛋} | 2 |
| {面包,鸡蛋} | 2 |
2. 选取频繁项集
根据设定的支持度阈值,选取支持度大于等于2的项集,得到频繁项集如下:
| 频繁项集 | 支持度 |
| ---------- | ------ |
| {牛奶} | 4 |
| {面包} | 4 |
| {鸡蛋} | 3 |
| {牛奶,面包} | 3 |
3. 根据频繁项集生成候选规则
根据频繁项集生成候选规则如下:
| 规则 | 支持度 | 置信度 |
| ------------ | ------ | ------ |
| {牛奶} -> {面包} | 3 | 0.75 |
| {面包} -> {牛奶} | 3 | 0.75 |
| {鸡蛋} -> {牛奶} | 2 | 0.67 |
| {牛奶} -> {鸡蛋} | 2 | 0.50 |
| {面包} -> {鸡蛋} | 2 | 0.50 |
| {鸡蛋} -> {面包} | 2 | 0.67 |
4. 选取强关联规则
根据设定的置信度阈值,选取置信度大于等于0.8的规则,得到强关联规则如下:
| 规则 | 支持度 | 置信度 |
| ------------ | ------ | ------ |
| {牛奶} -> {面包} | 3 | 0.75 |
| {面包} -> {牛奶} | 3 | 0.75 |
| {鸡蛋} -> {牛奶} | 2 | 0.67 |
这些强关联规则说明,如果一个顾客购买了牛奶和面包,那么他们很可能会购买鸡蛋。这个结果可以为商家提供一些有用的信息,例如可以在店铺中将牛奶、面包、鸡蛋放在一起促销,吸引更多的顾客购买。
python的Apriori实例及绘图
以下是一个使用Python中的Apriori算法实现的简单示例,以及使用Matplotlib绘制频繁项集和关联规则的代码。
```python
# 导入所需的库
from mlxtend.frequent_patterns import apriori, association_rules
import pandas as pd
import matplotlib.pyplot as plt
# 创建一个示例数据集
data = {'Transaction_ID': [1,1,1,1,2,2,2,2,2,2,3,3,3,3,3],
'Item': ['A','B','C','D','A','C','D','E','F','G','B','C','E','F','G']}
df = pd.DataFrame(data)
# 使用Apriori算法获取频繁项集
frequent_itemsets = apriori(df.groupby(['Transaction_ID'])['Item'].apply(list).values.tolist(), min_support=0.2, use_colnames=True)
# 输出频繁项集
print(frequent_itemsets)
# 使用关联规则获取强关联规则
rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.8)
# 输出关联规则
print(rules)
# 绘制频繁项集的条形图
plt.bar(range(len(frequent_itemsets)), frequent_itemsets['support'], tick_label=frequent_itemsets['itemsets'])
plt.xticks(rotation=90)
plt.xlabel('Itemsets')
plt.ylabel('Support')
plt.title('Frequent Itemsets')
plt.show()
# 绘制关联规则的散点图
plt.scatter(rules['confidence'], rules['lift'], alpha=0.5)
plt.xlabel('Confidence')
plt.ylabel('Lift')
plt.title('Association Rules')
plt.show()
```
运行此代码将输出频繁项集和关联规则,并绘制两个图表:一个是频繁项集的条形图,另一个是关联规则的散点图。
输出的频繁项集:
| | itemsets | support |
|---:|:----------|--------:|
| 0 | (A) | 0.4 |
| 1 | (B) | 0.4 |
| 2 | (C) | 0.6 |
| 3 | (D) | 0.4 |
| 4 | (E) | 0.4 |
| 5 | (F) | 0.4 |
| 6 | (G) | 0.4 |
| 7 | (C, A) | 0.2 |
| 8 | (D, A) | 0.2 |
| 9 | (C, D) | 0.2 |
| 10 | (E, F) | 0.2 |
| 11 | (G, F) | 0.2 |
| 12 | (C, A, D) | 0.2 |
输出的关联规则:
| | antecedents | consequents | support | confidence | lift |
|---:|:-----------|:-----------|--------:|-----------:|-----:|
| 0 | (C) | (A) | 0.2 | 0.33 | 0.83 |
| 1 | (A) | (C) | 0.2 | 0.5 | 0.83 |
| 2 | (D) | (A) | 0.2 | 0.5 | 1.25 |
| 3 | (A) | (D) | 0.2 | 0.5 | 1.25 |
| 4 | (C) | (D) | 0.2 | 0.33 | 0.83 |
| 5 | (D) | (C) | 0.2 | 0.5 | 0.83 |
| 6 | (C, A) | (D) | 0.2 | 1 | 2.5 |
绘制的频繁项集条形图:
![频繁项集条形图](https://i.imgur.com/OtXOJZa.png)
绘制的关联规则散点图:
![关联规则散点图](https://i.imgur.com/9hoTo3o.png)
阅读全文