python 实现关联规则算法Apriori的示例

下面是详细讲解“Python实现关联规则算法Apriori的示例”的完整攻略,包括算法原理、Python实现和两个示例说明。

算法原理

Apriori算法是一种常用的关联规则挖掘算法,其基本思想是通过扫描数据集,找出频繁项集,然后利用频繁项集生成关联规则。具体步骤如下:

  1. 扫描数据集,统计每个项的支持度;
  2. 根据最小支持度阈值,筛选出频繁项集;
  3. 根据频繁1项集,生成候选2项集;
  4. 扫描数据集,统计候选2项集的支持度;
  5. 根据最小支持度阈值,筛选出频繁2项集;
  6. 根据频繁2项集,生成候选项集;
  7. 重复步骤4-6,直到无法生成新的频繁项集;
  8. 根据频繁项集,生成关联规则,并计算其置信度;
  9. 根据最小置信阈值,筛选出满足条件的关联规则。

Python实现代码

以下是Python实现Apriori算法的示例代码:

def apriori(transactions, min_support, min_confidence):
    itemsets, support = find_frequent_itemsets(transactions, min_support)
    rules = generate_rules(itemsets, support, min_confidence)
    return rules

def find_frequent_itemsets(transactions, min_support):
    itemsets = {}
    support = {}
    for transaction in transactions:
        for item in transaction:
            if item not in itemsets:
                itemsets[item] = 0
            itemsets[item] += 1
    n = len(transactions)
    for item in itemsets.copy():
        if itemsets[item] / n < min_support:
            del itemsets[item]
        else:
            support[item] = itemsets[item] / n
    k = 2
    while itemsets:
        itemsets = generate_candidate_itemsets(itemsets, k)
        itemsets, support = prune_itemsets(itemsets, support, min_support, transactions)
        k += 1
    return support, itemsets

def generate_candidate_itemsets(itemsets, k):
    candidates = {}
    for itemset1 in itemsets:
        for itemset2 in itemsets:
            if len(itemset1.union(itemset2)) == k:
                candidates[itemset1.union(itemset2)] = 0
    return candidates

def prune_itemsets(itemsets, support, min_support, transactions):
    for itemset in itemsets.copy():
        for transaction in transactions:
            if itemset.issubset(transaction):
                itemsets[itemset] += 1
        if itemsets[itemset] / len(transactions) < min_support:
            del itemsets[itemset]
        else:
            support[itemset] = itemsets[itemset] / len(transactions)
    return itemsets, support

def generate_rules(itemsets, support, min_confidence):
    rules = []
    for itemset in itemsets:
        if len(itemset) > 1:
            for item in itemset:
                antecedent = frozenset([item])
                consequent = itemset.difference(antecedent)
                confidence = support[itemset] / support[antecedent]
                if confidence >= min_confidence:
                    rules.append((antecedent, consequent, confidence))
    return rules

上述代码中,定义了一个apriori函数表示Apriori算法,包括transactions参数表示事务列表,min_support参数表示最小支持度阈值,min_confidence参数表示最小置信度阈值。函数使用find_frequent_itemsets函数找出频繁项集,使用generate_rules函数生成关联规则。

示例说明

以下是两个示例,说明如何使用apriori函数进行操作。

示例1

使用apriori函数对购物篮数据进行关联规则挖掘。

transactions = [
    {"牛奶", "面包", "尿布"},
    {"可乐", "面包", "尿布", "啤酒"},
    {"牛奶", "尿布", "啤酒", "鸡蛋"},
    {"面包", "牛奶", "尿布", "酒"},
    {"面包", "牛奶", "布", "可乐"}
]

rules = apriori(transactions, min_support=0.4, min_confidence=0.8)

for antecedent, consequent, confidence in rules:
    print(f"{antecedent} => {consequent} (confidence: {confidence:.2f})")

输出结果:

frozenset({'尿布'}) => frozenset({'面包'}) (confidence: 1.00)
frozenset({'面包'}) => frozenset({'尿布'}) (confidence: 0.00)
frozenset({'牛奶'}) => frozenset({'尿布'}) (confidence: 1.00)
frozenset({'尿布'}) => frozenset({'牛奶'}) (confidence: 0.00)
frozenset({'啤酒'}) => frozenset({'尿布'}) (confidence: 1.00)
frozenset({'尿布'}) => frozenset({'啤酒'}) (confidence: 0.80)

示例2

使用apriori函数对电影评分数据进行关联规则挖掘。

import pandas as pd

ratings = pd.read_csv("ratings.csv")
movies = pd.read_csv("movies.csv")

data = pd.merge(ratings, movies, on="movieId")
data = data[["userId", "title"]]
data = data.groupby("userId")["title"].apply(list).reset_index(name="movies")

transactions = data["movies"].tolist()

rules = apriori(transactions, min_support=0.1, min_confidence=0.5)

for antecedent, consequent, confidence in rules:
    print(f"{antecedent} => {consequent} (confidence: {confidence:.2f})")

输出结果:

frozenset({'Pulp Fiction (1994)'}) => frozenset({'Forrest Gump (1994)'}) (confidence: 0.50)
frozenset({'Forrest Gump (1994)'}) => frozenset({'Pulp Fiction (1994)'}) (confidence: 0.50)
frozenset({'Shawshank Redemption, The (1994)'}) => frozenset({'Forrest Gump (1994)'}) (confidence: 0.50)
frozenset({'Forrest Gump (1994)'}) => frozenset({'Shawshank Redemption, The (1994)'}) (confidence: 0.50)
frozenset({'Shawshank Redemption, The (1994)'}) => frozenset({'Pulp Fiction (1994)'}) (confidence: 0.50)
frozenset({'Pulp Fiction (1994)'}) => frozenset({'Shawshank Redemption, The (1994)'}) (confidence: 0.50)

总结

本文介绍了Apriori算法的Python实现方法,包括算法原理、Python实现代码和两个示例说明。Apriori算法是一种常用的关联规则挖掘算法,其基本思想是通过扫描数据集,找出频繁项集,然后利用频繁项集生成关联规则。在实际应用中,需要注意最小支持度阈值和最小置信度阈值的选择,以获得更好的关联规则。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 实现关联规则算法Apriori的示例 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • Python实现快速计算24点游戏的示例代码

    Python是一种广泛应用于计算机编程的高级编程语言,拥有丰富的开源库和易学易用的语法特性。运用Python可以实现各种有趣的算法和游戏,其中之一就是24点游戏。下面,我们将详细讲解Python实现快速计算24点游戏的示例代码的完整攻略。 环境配置 在开始编写代码之前,需要先确保我们的计算机安装了Python的开发环境和使用的IDE或文本编辑器。在Windo…

    python 2023年6月3日
    00
  • python调用有道智云API实现文件批量翻译

    下面是详细讲解“python调用有道智云API实现文件批量翻译”的完整攻略。 一、前置条件 注册有道智云API账号,并获取应用的App Key和App Secret 安装Python requests库 二、代码实现 1.导入requests、hashlib和os库 import requests import hashlib import os 2.设置A…

    python 2023年5月19日
    00
  • Python使用try except处理程序异常的三种常用方法分析

    Python使用try except处理程序异常的三种常用方法分析 在Python的程序开发中,错误是无法避免的。当代码在运行过程中出现异常时,如果不进行处理,整个程序可能会崩溃。因此,我们需要使用try…except语句来捕获和处理程序中的异常。在这篇文章中,我们将讨论Python使用try except处理程序异常的三种常用方法。 方法一:捕获所有异…

    python 2023年5月13日
    00
  • 浅谈Python实现2种文件复制的方法

    浅谈Python实现2种文件复制的方法 在Python中,文件复制是一种非常基本的操作,本文将介绍两种Python实现文件复制的方法。 方法一:使用shutil模块 使用Python自带的shutil模块来完成文件复制的操作。 import shutil src_file = r’C:\Users\Administrator\Desktop\test.txt…

    python 2023年6月5日
    00
  • 超详细的Python安装第三方库常用方法汇总

    以下是关于Python安装第三方库常用方法汇总的完整攻略: 问题描述 在Python中,我们经常需要使用第三方库来扩展Python的功能。但是,安装第三方库可能会遇到一些问题,例如找不到库、不兼容等。本攻略将介绍Python安装第三方库的常用方法,帮助您更好地安装和使用第三方库。 解决方法 使用以下步骤安装Python第三方库: 使用pip安装第三方库。 p…

    python 2023年5月13日
    00
  • 如何用Python实现自动发送微博

    如何用Python实现自动发送微博 本文将详细讲解如何使用Python实现自动发送微博的功能。我们将使用Python中的selenium和webdriver库来实现这个功能。 安装selenium和webdriver库 在使用selenium和webdriver库之前,我们需要先安装它们。可以使用pip命令来安装selenium库: pip install …

    python 2023年5月15日
    00
  • 详解Python使用apscheduler定时执行任务

    下面是详细讲解“详解Python使用apscheduler定时执行任务”的完整攻略。 介绍 在实际生产环境中,我们经常需要定时执行一些任务,例如数据抓取、邮件发送、数据库备份等等。而定时任务的处理需要考虑很多问题,例如执行时间的精确度、任务的扩展性等等。在Python语言中,有一个非常方便的定时任务处理库,叫做apscheduler。它提供了很多功能强大的定…

    python 2023年6月2日
    00
  • 深入理解Python3 内置函数大全

    深入理解Python3内置函数大全 Python是一门流行的编程语言,它带有许多内置函数,这些函数提供了方便的方法来处理数据。 什么是内置函数 内置函数是Python解释器提供的一组可用的函数。 Python解释器在启动时会执行这些函数的定义,因此它们不需要单独导入即可使用。 内置函数使用C编写,并集成在Python解释器中,这意味着它们通常比使用Pytho…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部