`
junfeng_feng
  • 浏览: 20350 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Apri 算法 Python 实现

 
阅读更多
#!C:/Python27/python.exe
#coding=gbk
import sys
__author__ = "junfeng_feng"
"""Python实现Apri算法
input:数据文件名 最小支持度
ouput:所有频繁项集  支持度

Usage:python Apri.py filename min_surpport
Exampe: python Apri.py data.txt 2

3点说明
1、使用Python不到70行的代码,简洁完整的实现Apri算法
2、使用内存存放数据(Python会做相应大文件的优化)
3、代码易读,易理解

存在的问题:
1、超大的文件,处理将很慢
2、原始的apri,没有优化

data.txt文件内容
A	C	D
B	C	E
A	B	C	E
B	E
"""

#生成候选集C1
#return:字典key=item;value=item出现的次数
def getC1(srcdata): 
    c1 = {} 
    for transaction in srcdata: 
        for item in transaction: 
            key = frozenset(set([item])) #frozenset才可以作为字典的key
            #计数item
            if key in c1: 
                c1[key] = c1[key] + 1 
            else: 
                c1[key] = 1 
    return c1 

#return: 满足最小支持度的候选集
def getL(c, supct): 
    # 删除小于最小支持度的item
    for key in [item for item in c if c[item] < supct]: 
        del c[key] 
    return c 

#根据上一个L产生候选集C 
#扫描源数据,计数item
def getnextcandi(preL, srcdata): 
    c = {} 
    for key1 in preL: 
        for key2 in preL: 
            if key1 != key2: 
                # preL 和 preL 生成笛卡尔积 
                key = key1.union(key2) 
                c[key] = 0 
    #计数item 
    for i in srcdata: 
        for item in c: 
            if item.issubset(i): 
                c[item] = c[item] + 1 
    return c 

# Apriori 算法 
def Apriori(filename, supct): 
    #读取数据文件
    #文件格式:一行一个事务,一个事务的各个元素以Tab(\t)分隔
    srcdata = [line.strip().split("\t") for line in file(filename)]
    c = getC1(srcdata) 
    L = {} 
    while True: 
        temp_L = getL(c, supct) 
        if not temp_L: 
            break 
        else: 
            L = temp_L 
        #由上一个L,产生候选集c 
        c = getnextcandi(L, srcdata) 
    return L

if __name__ == "__main__":
    if len(sys.argv) == 3:
        #Usage:   apri.py filename surpport
        print Apriori(sys.argv[0], sys.argv[1])
    else:
        #for example
        print Apriori("awk.txt", 8)


分享到:
评论

相关推荐

    Apriltag_python-master.zip_3ZE5_AprilTags python_AprilTag编译_Apri

    【描述】中的"apriltag 识别 python 免编译版本~"表明这个压缩包包含了一个Python实现的AprilTag识别库,用户可以直接使用,无需进行编译过程,这对于Python开发者来说非常方便,因为编译步骤有时会因依赖问题变得...

    C#编写的PrefixSpan算法

    prefixspan算法是一种序列模式算法,该算法避免产生候选序列,优于传统的Apri算法。

    Apriori_Matlab.rar_Apriori_MATLAB apriori_apriori algorithm_apri

    《Apriori算法在MATLAB中的实现》 Apriori算法是数据挖掘领域中的经典算法,主要用于发现关联规则。关联规则学习旨在从大规模交易数据库中找出频繁项集和有趣的关联规则,例如“如果顾客购买了尿布,那么他们可能也...

    EVE1APRI.zip_evening time dpc_model control

    标题"EVE1APRI.zip_evening time dpc_model control"涉及的是一个关于双馈感应发电机(DFIG)的直接功率控制(DPC)模型,特别关注在傍晚时段的应用。在这个模型中,双馈发电机是一种广泛应用的风力发电系统的关键...

    aprior挖掘日志

    从压缩包内的文件名"apri_create_guanlian.java"来看,这可能是一个Java源代码文件,其中包含了Apriori算法的实现,特别是可能涉及到创建关联规则的环节。在Apriori算法中,“创建关联”意味着找出项集之间的关联...

    Communications of the ACM 2006 Jan-Apri

    这个期刊自1957年开始发行,至今已有几十年的历史,涵盖了计算机科学和技术的各个分支,包括算法、数据库、人工智能、网络安全、编程语言、人机交互等。2006年 Jan-April 的期号包含了当年前三个月的期刊内容,这些...

    Tom_Kao_2008_APRI_UMLChina_OK

    《以Android实现Use Case分析与手机界面布局规划》 在Android应用开发中,Use Case分析是一种重要的需求收集和系统设计工具。它可以帮助开发者理解用户的需求,进而构建出满足用户期望的交互流程。高焕堂在2008年的...

    apriori-java.rar_Apriori in java_FastVector java_apriori ja_apri

    用java实现的数据挖掘的关联规则的Apriori

    Servlet3.1规范(最终版)

    WebSocket API允许开发者创建持久连接,实现双向通信,非常适合实时应用,如聊天室、在线游戏、股票交易等。WebSocket基于Servlet的生命周期,通过Upgrade头信息从HTTP切换到WebSocket协议。 三、可编程性增强 1. ...

    论文研究 - 无创性纤维化评分作为晚期代偿性肝硬化需要治疗的静脉曲张的预后标志

    我们旨在评估非侵入性纤维化评分(AAR,APRI,FIB-4,King和VITRO评分)在预测埃及患者HCV相关性肝硬化中是否存在EV和需要治疗的高风险静脉曲张(VNT)的诊断性能。 方法:这项前瞻性研究纳入了154例无出血史的HCV...

    Data Mining The Web Uncovering Patterns In Web Content Structure And Usage

    Data Mining The Web Uncovering Patterns In Web Content Structure And Usage Apri 2007 Ebook-Ddu.pdf

    Financial Risk Management Practice-金融风险管理实务

    Financial Risk Management ...tering the Biggest Risk of all (HBR Apri l 2005). pdf coso_erm_frmwrk. ppt Credit Risk Modeling using Excel and VBA. pdf 8. ERM Theory and Practice (Stulz). pdf 9. Integ

    DIRECTIVE 2014-40-EU OF THE EUROPEAN PARLIAMENT AND OF THE COUNC

    标题 "DIRECTIVE 2014-40-EU OF THE EUROPEAN PARLIAMENT AND OF THE COUNC" 指的是欧洲议会和欧盟理事会于2014年发布的一项指令,通常这类指令旨在规范欧盟成员国在特定领域的法律框架。在IT行业中,这种指令可能...

    italiansubs加加「italiansubs-plus-plus」-crx插件

    Visualizza il pulsante“ Apri tutte” nella pagina“ Risposte non lette” del论坛。 在新选项卡/精细中,单击列表中的线程。 -Apri tutti i nuovi主题。 在ogni board del论坛中查看Visualizza il pulsante“ ...

    感应传感器

    例如,通过感应传感器,网页可以获取用户的运动数据、地理位置、光照强度等信息,从而实现智能化的应用场景。 在“apri-sensor-master”这个压缩包文件中,我们可以推测它可能包含了一个用于处理感应传感器数据的...

    论文研究 - 替诺福韦酯富马酸替诺福韦在科托努国立大学医院乙型肝炎治疗中的有效性和安全性

    使用APRI评分评估对肝纤维化的治疗反应。 根据MDRD(肾脏疾病饮食的变化)公式低于90 mL / min / 1.73 m2的肾小球滤过率降低来评估肾功能损害。 结果:总共纳入了42例接受TDF治疗的患者。 平均年龄为46.7±13.8岁。...

    机器学习-UFAL:Curso Aprendizado deMáquinanaPrática

    Curso Aprendizado deMáquinanaPrática 阿拉戈斯联邦大学-UFAL Área:机器学习 Apoio:UFAL中心(CICA e Edge) 教授: 清醒 机器学习技术概论(Apriendizado deMáquina)(机器学习... 机器学习技术概论(Apri

    apriltag_ros:AprilTag 3视觉基准检测器的ROS2包装器

    快速开始从有效的ROS安装开始(支持Kinetic和Melodic): mkdir -p ~/apriltag_ros2_ws/src # Make a new workspace cd ~/apriltag_ros2_ws/src # Navigate to the source spacegit clone https://github.com/Apri

Global site tag (gtag.js) - Google Analytics