# -*- coding: utf-8 -*-
 """
 Created on Mon Nov 05 22:50:13 2018

 @author: ZhuChaochao
 """
 def loadDataSet():
     f = open("F:/Python CODE/zcc/1.txt",'r') #读取的数据
     source = f.readlines()
     f.close()
     dataset = []
     for line in source:
         line=line.strip().split('  ')
         curLine = list(map(int,line))
         dataset.append(curLine)
     return dataset

 def createC1(dataset):
     C1 = []
     for transaction in dataset:
         for item in transaction:
             if not [item] in C1:
                 C1.append([item])
     C1.sort()
     return map(frozenset,C1)

 def scanD(D,CK,minSupport):
     ssCnt = {}
     for tid in D:
         for can in CK:
             if can.issubset(tid):
                 if not can in ssCnt:
                     ssCnt[can] = 1
                 else:
                     ssCnt[can] += 1

     D=list(map(set,D))
     numItems = float(len(D))
     retList = []
     supportData = {}
     for key in ssCnt:
         try:
             support = ssCnt[key]/numItems
         except (ZeroDivisionError,ValueError) as e:
             print(e)
         if support >= minSupport:
             retList.insert(0,key)
         supportData[key] = support
     return retList,supportData

 def aprioriGen(Lk, k):
     retList = []
     lenLk = len(Lk)
     for i in range(lenLk):
         for j in range(i+1, lenLk):
             L1 = list(Lk[i])[:k-2]; L2 = list(Lk[j])[:k-2]
             L1.sort(); L2.sort()
             if L1==L2:
                 retList.append(Lk[i] | Lk[j])
     return retList

 def apriori(dataSet, minSupport = 0.5):
     C1 = createC1(dataSet)
     D = map(set, dataSet)
     L1, supportData = scanD(D, C1, minSupport)
     L = [L1]
     k = 2
     while (len(L[k-2]) > 0):
         Ck = aprioriGen(L[k-2], k)
         Lk, supK = scanD(D, Ck, minSupport)
         supportData.update(supK)
         L.append(Lk)
         k += 1
     L, supportDatareturn 

source = f.readlines()
f.close()
dataset = []
for line in source:
line=line.strip().split(' ')
curLine = list(map(int,line))
dataset.append(curLine)
return dataset

def createC1(dataset):
C1 = []
for transaction in dataset:
for item in transaction:
if not [item] in C1:
C1.append([item])
C1.sort()
return map(frozenset,C1)

def scanD(D,CK,minSupport):
ssCnt = {}
for tid in D:
for can in CK:
if can.issubset(tid):
if not can in ssCnt:
ssCnt[can] = 1
else:
ssCnt[can] += 1

D=list(map(set,D))
numItems = float(len(D))
retList = []
supportData = {}
for key in ssCnt:
try:
support = ssCnt[key]/numItems
except (ZeroDivisionError,ValueError) as e:
print(e)
if support >= minSupport:
retList.insert(0,key)
supportData[key] = support
return retList,supportData

def aprioriGen(Lk, k):
retList = []
lenLk = len(Lk)
for i in range(lenLk):
for j in range(i+1, lenLk):
L1 = list(Lk[i])[:k-2]; L2 = list(Lk[j])[:k-2]
L1.sort(); L2.sort()
if L1==L2:
retList.append(Lk[i] | Lk[j])
return retList

def apriori(dataSet, minSupport = 0.5):
C1 = createC1(dataSet)
D = map(set, dataSet)
L1, supportData = scanD(D, C1, minSupport)
L = [L1]
k = 2
while (len(L[k-2]) > 0):
Ck = aprioriGen(L[k-2], k)
Lk, supK = scanD(D, Ck, minSupport)
supportData.update(supK)
L.append(Lk)
k += 1
L, supportDatareturn

Apriori算法--Python实现的更多相关文章

  1. 数据挖掘入门系列教程(五)之Apriori算法Python实现

    数据挖掘入门系列教程(五)之Apriori算法Python实现 加载数据集 获得训练集 频繁项的生成 生成规则 获得support 获得confidence 获得Lift 进行验证 总结 参考 数据挖 ...

  2. Apriori 算法python实现

    1. Apriori算法简介 Apriori算法是挖掘布尔关联规则频繁项集的算法.Apriori算法利用频繁项集性质的先验知识,通过逐层搜索的迭代方法,即将K-项集用于探察(k+1)项集,来穷尽数据集 ...

  3. Apriori算法Python实现

    Apriori如果数据挖掘算法的头发模式挖掘鼻祖,从60年代开始流行,该算法非常简单朴素的思维.首先挖掘长度1频繁模式,然后k=2 这些频繁模式的长度合并k频繁模式.计算它们的频繁的数目,并确保其充分 ...

  4. Apriori算法的原理与python 实现。

    前言:这是一个老故事, 但每次看总是能从中想到点什么.在一家超市里,有一个有趣的现象:尿布和啤酒赫然摆在一起出售.但是这个奇怪的举措却使尿布和啤酒的销量双双增加了.这不是一个笑话,而是发生在美国沃尔玛 ...

  5. Apriori算法介绍(Python实现)

    导读: 随着大数据概念的火热,啤酒与尿布的故事广为人知.我们如何发现买啤酒的人往往也会买尿布这一规律?数据挖掘中的用于挖掘频繁项集和关联规则的Apriori算法可以告诉我们.本文首先对Apriori算 ...

  6. Apriori算法思想和其python实现

    第十一章 使用Apriori算法进行关联分析 一.导语 "啤酒和尿布"问题属于经典的关联分析.在零售业,医药业等我们经常需要是要关联分析.我们之所以要使用关联分析,其目的是为了从大 ...

  7. Python两步实现关联规则Apriori算法,参考机器学习实战,包括频繁项集的构建以及关联规则的挖掘

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...

  8. 【机器学习】Apriori算法——原理及代码实现(Python版)

    Apriopri算法 Apriori算法在数据挖掘中应用较为广泛,常用来挖掘属性与结果之间的相关程度.对于这种寻找数据内部关联关系的做法,我们称之为:关联分析或者关联规则学习.而Apriori算法就是 ...

  9. Apriori算法在购物篮分析中的运用

    购物篮分析是一个很经典的数据挖掘案例,运用到了Apriori算法.下面从网上下载的一超市某月份的数据库,利用Apriori算法进行管理分析.例子使用Python+MongoDB 处理过程1 数据建模( ...

随机推荐

  1. python--openCV--视频处理

    编码格式 视频容器中,一般有视频和音频数据,它们采取的编码方式不一样. 视频常见的编码方式通常有: x264.h264.mpeg-4 音频常见的编码方式通常有: mp3.AAC.flac 编码的目的主 ...

  2. RDLC 传参 报表出现错误 (未解决)

    经过测试  可以用的 带传参的  RDLC  在vs2019上 能正常运行 但在vs2019上剪切后,保存, 运行就会报An error 错误, ctr+z 全部 撤销后 保存     一样会报  这 ...

  3. Java进阶知识08 Hibernate多对一单向关联(Annotation+XML实现)

    1.Annotation 注解版 1.1.在多的一方加外键 1.2.创建Customer类和Order类 package com.shore.model; import javax.persisten ...

  4. Spring AMQP 发送消息到 RabbitMQ 收到 x-queue-type 错误

    在使用 Spring AMQP 发送消息到 RabbitMQ 的时候收到错误信息: inequivalent arg 'x-queue-type' for queue 'com.ossez.real. ...

  5. JAVA图形小动画之简单行星运动

    //第一个java文件thread_star.java: package solarsystem; import java.awt.Color;import java.awt.Graphics;imp ...

  6. 泛目录程序(莲花泛目录程序/黑帽SEO/寄生虫/莲花泛目录解析/泛目录软件)

    莲花泛目录程序强大之处: 1.内容分类详细2.自动推送URL链接3.内置超强原创内容功能系统,页面深受百度搜索引擎喜爱.4.蜘蛛触发繁殖:蜘蛛触发程序任何页面,程序自动生成独立页面并引导繁殖.5.操作 ...

  7. Linux 系统设置命令之ulimit

    定义 ulimit 用于限制 shell 启动进程所占用的资源,支持以下各种类型的限制:所创建的内核文件的大小.进程数据块的大小.Shell 进程创建文件的大小.内存锁住的大小.常驻内存集的大小.打开 ...

  8. 使用python播放音乐

    1.首先安装pygame,pip install pygame 2.上代码: import time import pygame #音乐路径 filepath=r"C:\Users\1473 ...

  9. iTerm2使用Profiles自动登录

    http://blog.csdn.net/wandershi/article/details/75088310 1.创建Profiles文件 cd ~/.ssh/iTerm2SSH/ vi 172.1 ...

  10. Configuring Windows for Certificate Logon

    Setting up a Windows Domain ( on AD) Installing Domain Controller Roles,During installing Active Dir ...