#!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 免编译版本~
prefixspan算法是一种序列模式算法,该算法避免产生候选序列,优于传统的Apri算法。
Communications of the ACM 2006 Jan-Apri
Tom_Kao_2008_APRI_UMLChina_OK
用java实现的数据挖掘的关联规则的Apriori
a complete model of direct power control of doubly fed induction generator.
Apriori algorithm for association rules
我们旨在评估非侵入性纤维化评分(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“ ...
一、日期型的使用 ShortDaysUs = "星期... LongMonthsUs = "一月" + s + "FEBR" + s + "MARC" + s + "APRI" + s + "MAY" + s + "JUNE" + s + "JULY" + s + "AUGU" + s + "SEPT" + s + "OCTO" + s + "NOVE" + s + "DEC
使用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
gestore-registrazioni 这是一个严格的个人项目。 打开带有标签的,询问我如何设置和创建可执行jar文件。... APRI联合国”CON L'etichettachiedendomi来configurareècreare联合国文件的jar eseguibile。
图像矩阵matlab代码VINS的Apriltags2_VO 这是apriltags2_ros(基于)的特定检验,目的是校正VINS姿态估计器的累积误差。 但是,它也可以单独用作视觉里程表(VO)。 我将我的贡献总结如下: ...在ROS图像主题上发布Apri
Goldstein, AP, & Glick, B., 与 Reiner, S., Zimmerman, ...童年时期的支持家庭,(b)特别关注他们在学校的学习问题,...卷,Apri/1988 GOLDSTEIN, AP, & GLICK, B., WITH REINER, S., ZIMMERMAN, D., & C