#!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 免编译版本~"表明这个压缩包包含了一个Python实现的AprilTag识别库,用户可以直接使用,无需进行编译过程,这对于Python开发者来说非常方便,因为编译步骤有时会因依赖问题变得...
prefixspan算法是一种序列模式算法,该算法避免产生候选序列,优于传统的Apri算法。
《Apriori算法在MATLAB中的实现》 Apriori算法是数据挖掘领域中的经典算法,主要用于发现关联规则。关联规则学习旨在从大规模交易数据库中找出频繁项集和有趣的关联规则,例如“如果顾客购买了尿布,那么他们可能也...
标题"EVE1APRI.zip_evening time dpc_model control"涉及的是一个关于双馈感应发电机(DFIG)的直接功率控制(DPC)模型,特别关注在傍晚时段的应用。在这个模型中,双馈发电机是一种广泛应用的风力发电系统的关键...
从压缩包内的文件名"apri_create_guanlian.java"来看,这可能是一个Java源代码文件,其中包含了Apriori算法的实现,特别是可能涉及到创建关联规则的环节。在Apriori算法中,“创建关联”意味着找出项集之间的关联...
这个期刊自1957年开始发行,至今已有几十年的历史,涵盖了计算机科学和技术的各个分支,包括算法、数据库、人工智能、网络安全、编程语言、人机交互等。2006年 Jan-April 的期号包含了当年前三个月的期刊内容,这些...
《以Android实现Use Case分析与手机界面布局规划》 在Android应用开发中,Use Case分析是一种重要的需求收集和系统设计工具。它可以帮助开发者理解用户的需求,进而构建出满足用户期望的交互流程。高焕堂在2008年的...
用java实现的数据挖掘的关联规则的Apriori
标题 "DIRECTIVE 2014-40-EU OF THE EUROPEAN PARLIAMENT AND OF THE COUNC" 指的是欧洲议会和欧盟理事会于2014年发布的一项指令,通常这类指令旨在规范欧盟成员国在特定领域的法律框架。在IT行业中,这种指令可能...
我们旨在评估非侵入性纤维化评分(AAR,APRI,FIB-4,King和VITRO评分)在预测埃及患者HCV相关性肝硬化中是否存在EV和需要治疗的高风险静脉曲张(VNT)的诊断性能。 方法:这项前瞻性研究纳入了154例无出血史的HCV...
Data Mining The Web Uncovering Patterns In Web Content Structure And Usage Apri 2007 Ebook-Ddu.pdf
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
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岁。...
Curso Aprendizado deMáquinanaPrática 阿拉戈斯联邦大学-UFAL Área:机器学习 Apoio:UFAL中心(CICA e Edge) 教授: 清醒 机器学习技术概论(Apriendizado deMáquina)(机器学习... 机器学习技术概论(Apri
快速开始从有效的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
jQuery 日期选择 用于在 Ruby on Rails 脚手架样式中生成日期选择器的 jQuery 插件。 安装 只需包含 jquery.dateselect.js 并声明要转换为日期选择器的元素。... 默认值:['January'、'February'、'March'、'Apri