实现Python关联规则算法代码
简介
关联规则算法是一种常用的数据挖掘算法,用于发现数据集中的项集之间的关联关系。在Python中,我们可以使用mlxtend
库来实现关联规则算法的代码。
本文将介绍关联规则算法的整体流程,并提供详细的代码示例和解释,以帮助新手开发者快速上手。
流程
下面是实现关联规则算法的整体流程:
- 数据准备:导入数据集、进行预处理和转换。
- 频繁项集挖掘:使用Apriori算法找出频繁项集。
- 关联规则生成:根据频繁项集生成关联规则。
- 关联规则评估:计算关联规则的支持度、置信度和提升度。
接下来,我们将详细介绍每个步骤中需要做的事情,并提供相应的代码示例和注释。
数据准备
在关联规则算法中,数据通常以事务形式存在,每个事务表示一个交易或一组项集。我们需要将原始数据转换为适合关联规则算法处理的格式。
import pandas as pd
# 导入数据集
data = pd.read_csv('transactions.csv')
# 转换数据格式为列表
transactions = []
for i in range(len(data)):
transactions.append([str(data.values[i,j]) for j in range(len(data.columns))])
上述代码中,我们首先使用pandas
库导入数据集,并将其存储在data
中。然后,我们将数据集转换为列表形式的transactions
,其中每个元素表示一个事务。
频繁项集挖掘
频繁项集是指在数据集中经常出现的项集。我们使用Apriori算法来挖掘频繁项集。mlxtend
库中提供了apriori
函数来实现Apriori算法。
from mlxtend.frequent_patterns import apriori
# 挖掘频繁项集
frequent_itemsets = apriori(transactions, min_support=0.1, use_colnames=True)
上述代码中,我们使用apriori
函数来挖掘频繁项集。transactions
是先前转换的事务列表,min_support
是支持度阈值,用于控制挖掘的频繁项集的数量。use_colnames=True
表示使用原始数据集中的项名称。
关联规则生成
在获得频繁项集后,我们可以使用association_rules
函数生成关联规则。关联规则是指项集之间的关联关系,例如:“苹果 -> 香蕉”。
from mlxtend.frequent_patterns import association_rules
# 生成关联规则
rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.7)
上述代码中,我们使用association_rules
函数来生成关联规则。frequent_itemsets
是先前获得的频繁项集,metric="confidence"
表示使用置信度作为评价指标,min_threshold=0.7
表示置信度阈值,只保留置信度大于等于0.7的规则。
关联规则评估
生成的关联规则可以通过计算支持度、置信度和提升度来评估其质量。支持度表示项集出现的频率,置信度表示规则的可靠性,提升度表示规则的提升程度。
# 计算关联规则的支持度、置信度和提升度
rules['support'] = rules['support'] * len(transactions)
rules['confidence'] = rules['confidence'] * rules['support'] / len(transactions)
rules['lift'] = rules['lift'] * rules['support'] / len(transactions)
上述代码中,我们通过乘以事务的数量来计算支持度、置信度和提升度的绝对值。这样做是为了更直观地理解规则的质量。