关联规则的支持度、置信度和提升度
时间: 2024-01-15 10:05:19 浏览: 122
关联规则是数据挖掘中的一种技术,用于发现数据集中不同项之间的关联关系。其中,支持度、置信度和提升度是常用的评价指标。
支持度(support)是指在数据集中同时出现 A 和 B 的概率,可以用以下公式计算:
support(A, B) = P(A ∩ B)
其中,P(A ∩ B) 表示 A 和 B 同时出现的概率。
置信度(confidence)是指在 A 出现的情况下,B 出现的概率,可以用以下公式计算:
confidence(A → B) = P(B | A) = P(A ∩ B) / P(A)
其中,P(B | A) 表示在 A 出现的情况下,B 出现的概率;P(A) 表示 A 出现的概率。
提升度(lift)是指在 A 出现的情况下,B 出现的概率与 B 在整个数据集中出现的概率之比,可以用以下公式计算:
lift(A → B) = confidence(A → B) / P(B)
其中,P(B) 表示 B 在整个数据集中出现的概率。
支持度、置信度和提升度都是用于评价关联规则的重要指标,可以帮助我们发现数据集中的有用信息。
相关问题
给出实现以下要求的代码:1、实现Apriori关联规则挖掘算法,求解所有频繁四项集 2、设置最小支持度、最小置信度、提升度,基于频繁三项集,推出10条强关联规则,给出规则支持度、置信度、提升度。
在Python中,我们可以使用`mlxtend`库中的`AssociationRules`模块来实现Apriori算法并挖掘频繁项集。首先,需要安装`mlxtend`:
```bash
pip install mlxtend
```
然后,下面是一个简单的示例代码,它实现了Apriori算法找出频繁的四项集,并生成强关联规则:
```python
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori, association_rules
# 假设我们有一个交易数据列表,每一行代表一次购买行为
transactions = [['Milk', 'Bread', 'Butter'], ['Bread', 'Eggs'], ['Milk', 'Bread', 'Butter', 'Eggs'], ['Tea', 'Biscuits']]
# 将字符串转换为数字编码
te = TransactionEncoder()
te_ary = te.fit(transactions).transform(transactions)
data = pd.DataFrame(te_ary, columns=te.columns_)
# 设置参数
min_support = 0.4 # 最小支持度(例如40%的商品组合)
min_confidence = 0.6 # 最小置信度(例如60%的支持度)
min_lift = 1.5 # 最小提升度(例如1.5倍)
# 使用Apriori算法计算频繁项集
frequent_itemsets = apriori(data, min_support=min_support, use_colnames=True)
# 提取频繁的四项集
frequent_four_itemsets = frequent_itemsets[frequent_itemsets['length'] == 4]
# 使用关联规则推断强规则
rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=min_confidence, lift=min_lift)
# 输出前10条最强的关联规则
print(rules.head(10), "\n")
# 规则的相关度指标
rules[['antecedents', 'consequents', 'support', 'confidence', 'lift']].head(10)
```
这将打印出满足条件的最频繁的10条关联规则及其支持度、置信度和提升度。
对GoodsOrder.csv使用Apriori算法分析销售商品的关联规则,获取满足支撑度和置信度的商品对,并显示支持度、置信度和提升度信息。
好的,我可以为您解答这个问题。
首先,需要导入Apriori算法所需要的库和数据集。这里我使用Python的mlxtend库来实现Apriori算法分析。
```python
import pandas as pd
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules
# 读取数据集
data = pd.read_csv('GoodsOrder.csv')
```
接下来,需要进行数据预处理,将数据转化为适合Apriori算法分析的格式。这里我们需要将每个订单中的商品名称合并成一个字符串。
```python
# 将每个订单中的商品名称合并成一个字符串
data['item'] = data.groupby(['OrderNo'])['GoodsName'].transform(lambda x: ','.join(x))
# 删除重复的订单号和商品名称
data = data[['OrderNo', 'item']].drop_duplicates()
```
然后,我们需要使用Apriori算法来分析频繁项集和关联规则。这里我们需要设置支持度和置信度的阈值。
```python
# 使用Apriori算法计算频繁项集
frequent_itemsets = apriori(data['item'].str.split(',', expand=True),
min_support=0.02, use_colnames=True)
# 使用关联规则算法计算关联规则
rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.4)
```
最后,我们需要输出满足条件的关联规则,包括支持度、置信度和提升度信息。
```python
# 输出满足条件的关联规则
result = rules[(rules['support'] >= 0.02) & (rules['confidence'] >= 0.4)]
result = result[['antecedents', 'consequents', 'support', 'confidence', 'lift']]
result = result.sort_values(by='lift', ascending=False)
print(result)
```
完整代码如下:
```python
import pandas as pd
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules
# 读取数据集
data = pd.read_csv('GoodsOrder.csv')
# 将每个订单中的商品名称合并成一个字符串
data['item'] = data.groupby(['OrderNo'])['GoodsName'].transform(lambda x: ','.join(x))
# 删除重复的订单号和商品名称
data = data[['OrderNo', 'item']].drop_duplicates()
# 使用Apriori算法计算频繁项集
frequent_itemsets = apriori(data['item'].str.split(',', expand=True),
min_support=0.02, use_colnames=True)
# 使用关联规则算法计算关联规则
rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.4)
# 输出满足条件的关联规则
result = rules[(rules['support'] >= 0.02) & (rules['confidence'] >= 0.4)]
result = result[['antecedents', 'consequents', 'support', 'confidence', 'lift']]
result = result.sort_values(by='lift', ascending=False)
print(result)
```
运行代码后,即可得到满足条件的关联规则,包括支持度、置信度和提升度信息。
阅读全文