Scikit-learn 中文教程

第二部分:Scikit-learn 核心基础
第 3 章 Scikit-learn 核心设计与 API 体系
第 4 章 数据集模块与数据划分
第三部分:数据预处理与特征工程
第 5 章 数据预处理核心模块(sklearn.preprocessing)
第 6 章 特征工程:提取、选择与构建
第四部分:模型评估与验证
第 7 章 模型评估指标(按任务类型划分)
第 8 章 模型验证与超参数调优
第五部分:Scikit-learn 核心算法模块
第 9 章 有监督学习:分类算法
第 10 章 有监督学习:回归算法
第 11 章 无监督学习:聚类与密度算法
第 12 章 半监督学习与其他常用算法
第八部分:性能优化与问题解决
第 18 章 Scikit-learn 性能优化
第 19 章 Scikit-learn 常见问题与解决方案

12.3 关联规则挖掘

Scikit-learn高级教程:关联规则挖掘与Apriori算法实战

Scikit-learn 中文教程

本教程章节为Scikit-learn学习者详细介绍关联规则挖掘核心概念,包括Apriori算法原理、支持度、置信度、提升度等评估指标,并通过购物篮分析实战应用,助您掌握Python中的关联规则挖掘技术。

推荐工具
PyCharm专业版开发必备

功能强大的Python IDE,提供智能代码补全、代码分析、调试和测试工具,提高Python开发效率。特别适合处理列表等数据结构的开发工作。

了解更多

关联规则挖掘与Scikit-learn

欢迎来到Scikit-learn高级教程的章节!关联规则挖掘是数据挖掘中的重要领域,常用于发现数据集中项之间的有趣关系。虽然Scikit-learn本身专注于传统的机器学习算法(如分类和回归),但在实际应用中,我们可以结合其他Python库(如mlxtend)来实现关联规则挖掘。本章将带您深入理解Apriori算法和评估指标,并通过购物篮分析案例实战演示。

Apriori算法:关联规则挖掘的核心

Apriori算法是一种经典的关联规则挖掘算法,通过迭代找出频繁项集,从而生成规则。它基于一个简单原理:如果一个项集是频繁的,那么它的所有子集也必须是频繁的。这大大减少了搜索空间。

算法步骤

  1. 扫描数据集:找出所有单一项集,计算支持度。
  2. 生成候选项集:从频繁项集中组合生成更大的项集。
  3. 剪枝:移除支持度低于阈值的项集。
  4. 重复步骤:直到没有新的频繁项集产生。
  5. 生成规则:从频繁项集提取规则,并计算置信度等指标。

在Python中,我们可以使用mlxtend库(一个与Scikit-learn兼容的库)轻松实现Apriori算法。安装方法:pip install mlxtend

评估指标:支持度、置信度、提升度

关联规则的质量通常用以下指标评估:

  • 支持度(Support):衡量规则在数据集中出现的频率。计算公式:支持度(A→B) = 同时包含A和B的事务数 / 总事务数。高支持度表示规则常见。
  • 置信度(Confidence):衡量规则的可信度。计算公式:置信度(A→B) = 支持度(A→B) / 支持度(A)。高置信度表示当A发生时,B很可能也发生。
  • 提升度(Lift):衡量规则的有效性,即B在A发生时的概率是否高于其整体概率。计算公式:提升度(A→B) = 置信度(A→B) / 支持度(B)。提升度>1表示A和B正相关。

这些指标帮助我们筛选出有意义的规则,避免随机关联。

关联规则的实战应用:购物篮分析

购物篮分析是关联规则挖掘的经典应用,用于分析顾客购买行为,优化商品摆放和促销策略。

示例:使用Python和mlxtend进行购物篮分析

假设我们有一个数据集,包含超市交易记录。我们将演示如何从数据准备到规则生成。

  1. 数据准备:加载数据集,通常是一个事务列表。

    import pandas as pd
    from mlxtend.frequent_patterns import apriori, association_rules
    
    # 示例数据集:每行是一个事务,项用逗号分隔
    data = [
        ['牛奶', '面包', '黄油'],
        ['牛奶', '面包'],
        ['牛奶', '黄油'],
        ['面包', '黄油'],
        ['牛奶']
    ]
    
    # 转换为适合mlxtend的格式(独热编码)
    from mlxtend.preprocessing import TransactionEncoder
    te = TransactionEncoder()
    te_ary = te.fit(data).transform(data)
    df = pd.DataFrame(te_ary, columns=te.columns_)
    print(df.head())
    
  2. 应用Apriori算法:找出频繁项集。

    # 设置最小支持度阈值,例如0.5
    frequent_itemsets = apriori(df, min_support=0.5, use_colnames=True)
    print(frequent_itemsets)
    
  3. 生成关联规则:基于频繁项集,计算评估指标。

    rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.7)
    print(rules[['antecedents', 'consequents', 'support', 'confidence', 'lift']])
    
  4. 分析和解释:根据支持度、置信度和提升度选择有用规则。例如,规则{牛奶} → {面包}可能显示高置信度,表明购买牛奶时经常也买面包。

实战建议

  • 调整阈值:根据业务需求调整最小支持度和置信度阈值,以平衡规则的常见性和相关性。
  • 可视化:使用图表(如网络图)可视化规则,帮助直观理解关系。
  • 结合Scikit-learn:关联规则结果可输入到Scikit-learn模型(如分类器)中,用于进一步预测或优化。

总结

本章介绍了关联规则挖掘的核心概念,包括Apriori算法和评估指标支持度、置信度、提升度。通过购物篮分析实战,您学会了如何在Python中使用mlxtend库实现关联规则挖掘,这可以扩展Scikit-learn的机器学习流程。记住,关联规则挖掘是数据驱动的,正确应用能显著提升业务洞察力。

继续学习其他Scikit-learn高级主题,如聚类或降维,以构建全面的数据科学技能!

开发工具推荐
Python开发者工具包

包含虚拟环境管理、代码格式化、依赖管理、测试框架等Python开发全流程工具,提高开发效率。特别适合处理复杂数据结构和算法。

获取工具包