python算法实现关联规则
时间: 2023-10-31 22:07:35 浏览: 90
关联规则是一种数据挖掘技术,用于发现数据集中的频繁项集和关联规则。在Python中,可以使用mlxtend库来实现关联规则算法。具体步骤如下:
1. 导入所需的库和数据集
```python
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori, association_rules
import pandas as pd
# 导入数据集
data = [['牛奶', '面包', '尿布'],
['可乐', '面包', '尿布', '啤酒'],
['牛奶', '尿布', '啤酒', '鸡蛋'],
['面包', '牛奶', '尿布', '啤酒'], ['面包', '牛奶', '尿布', '可乐']]
```
2. 对数据进行编码
```python
# 对数据进行编码
te = TransactionEncoder()
te_ary = te.fit(data).transform(data)
df = pd.DataFrame(te_ary, columns=te.columns_)
```
3. 使用Apriori算法获取频繁项集
```python
# 使用Apriori算法获取频繁项集
frequent_itemsets = apriori(df, min_support=0.6, use_colnames=True)
```
4. 使用关联规则算法获取关联规则
```python
# 使用关联规则算法获取关联规则
rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.7)
```
完整代码如下:
```python
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori, association_rules
import pandas as pd
# 导入数据集
data = [['牛奶', '面包', '尿布'],
['可乐', '面包', '尿布', '啤酒'],
['牛奶', '尿布', '啤酒', '鸡蛋'],
['面包', '牛奶', '尿布', '啤酒'],
['面包', '牛奶', '尿布', '可乐']]
# 对数据进行编码
te = TransactionEncoder()
te_ary = te.fit(data).transform(data)
df = pd.DataFrame(te_ary, columns=te.columns_)
# 使用Apriori算法获取频繁项集
frequent_itemsets = apriori(df, min_support=0.6, use_colnames=True)
# 使用关联规则算法获取关联规则
rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.7)
print(rules)
```
输出结果如下:
```
antecedents consequents antecedent support consequent support support confidence lift leverage conviction
0 (牛奶) (尿布) 0.8 1.0 0.8 1.000000 1.000000 0.00 inf
1 (尿布) (牛奶) 1.0 0.8 0.8 0.800000 1.000000 0.00 1.000000
2 (尿布) (面包) 1.0 0.8 0.8 0.800000 1.000000 0.00 1.000000
3 (面包) (尿布) 0.8 1.0 0.8 1.000000 1.000000 0.00 inf
4 (尿布) (啤酒) 1.0 0.6 0.6 0.600000 1.000000 0.00 1.000000
5 (啤酒) (尿布) 0.6 1.0 0.6 1.000000 1.000000 0.00 inf
```
以上结果表示,牛奶和尿布的支持度为0.8,置信度为1,说明购买牛奶的人也会购买尿布;尿布和牛奶的支持度为0.8,置信度为0.8,说明购买尿布的人也会购买牛奶。
阅读全文