关联分析是数据挖掘中的一种重要方法,可以用于发现数据中的关联规则。在此,我们将讨论 Python 如何进行关联分析。
一、数据预处理
在进行关联分析前,需要进行数据预处理,将数据转化为适合关联分析的形式。常见的数据形式是购物篮数据,也称为交易数据。购物篮数据是指记录顾客购买商品的清单,通常用二维表格表示。
Python 中可以使用 pandas 库进行数据预处理。pandas 库提供了读取和处理多种数据格式的工具。
import pandas as pd
data = pd.read_csv('transactions.csv',header=None)
transactions = []
for i in range(len(data)):
transactions.append([str(data.values[i,j]) for j in range(len(data.columns))])
二、关联规则挖掘
关联规则是指两个或多个事物之间的关系。例如,如果一位顾客购买了牛奶和面包,那么他们之间就有一个关联规则。
Apriori 算法是关联分析中应用最广泛的算法。在 Python 中,可以使用 mlxtend 库进行 Apriori 算法的实现。
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules
from mlxtend.preprocessing import TransactionEncoder
te = TransactionEncoder()
te_ary = te.fit(transactions).transform(transactions)
df = pd.DataFrame(te_ary, columns=te.columns_)
frequent_itemsets = apriori(df, min_support=0.01, use_colnames=True)
rules = association_rules(frequent_itemsets, metric="lift", min_threshold=1)
print(rules)
三、关联规则评价
关联规则挖掘完成后,需要对结果进行评价和解释。常用的评价指标有支持度、置信度和提升度。
支持度是指项集在数据中出现的频率。置信度是指在包含前提的情况下,结论出现的概率。提升度是指包含前提时,结论出现的概率与不包含前提时结论出现概率的比值。
在 Python 中,可以使用 mlxtend 库计算关联规则的支持度、置信度和提升度。
from mlxtend.frequent_patterns import association_rules
rules = association_rules(frequent_itemsets, metric="lift", min_threshold=1)
rules["antecedent_len"] = rules["antecedents"].apply(lambda x: len(x))
rules[ (rules['antecedent_len'] >= 2) & (rules['lift'] > 2) ]
四、可视化结果
在进行关联分析后,需要对结果进行可视化。Python 中可以使用 matplotlib 和 seaborn 等可视化库进行数据可视化。
import seaborn as sns
import matplotlib.pyplot as plt
sns.scatterplot(data=rules, x="support", y="confidence",hue="lift")
plt.show()
五、总结
Python 是一种功能强大的语言,非常适合进行关联分析和数据挖掘任务。使用 Python 进行关联分析需要进行数据预处理、关联规则挖掘、关联规则评价和结果可视化。通过 Python 的各种工具和库,我们可以快速而准确地进行关联分析,并对分析结果进行有效的可视化和解释。