资源简介
电商,物流,存储,仓储,商品关联性分析,python,Apriori
代码片段和文件信息
# -*- coding: utf-8 -*-
“““
Created on Mon Apr 16 09:55:00 2018
@author: wzh
“““
#导入需要的模块
import pandas as pd
import numpy as np
#函数定义
def createC1(dataSet):
“““利用原始数据生成1项集(包含一个元素的子集)
dataSet为我们需要输入的原始数据“““
C0=[]
for transaction in dataSet:
for item in transaction:
if not [item] in C0:
C0.append([item])
C0.sort()
C1 = list(map(frozensetC0)) #将C1.list每个元素转换为hashable的frozenset
return C1
def scanD(DckminSupport):
“““扫描之前得到的k项集(包含k个元素的子集),输出支持度大于最小支持度的频繁k项集(最小支持度用来控制最后输出的总数据量)和频繁k项集的支持度
D为我们的原始数据,ck为之前得到的k项集,minSupport为我们希望用来控制数据量的最小支持度“““
ssCnt={} #新建字典存储k项集和每个k项集出现的频率
for tid in D:
for can in ck:
if can.issubset(tid):
if can in ssCnt:
ssCnt[can] += 1
else:
ssCnt[can] = 1
numItem=float(len(D))
retList=[]
supportData={} #计算k项集的支持度,判断是否大于最小支持度
for key in ssCnt:
support=ssCnt[key]/numItem
if support>=minSupport:
retList.insert(0key)
supportData[key]=support
return retListsupportData#返回频繁k项集,相应支持度
def aprioriGen(Lkk):
“““利用递推的方法,利用k-1项集的并集来生成k项集
Lk为我们输入的k-1项集“““
retList=[]
lenLk=len(Lk)
for i in range(lenLk):
for j in range(i+1lenLk):
L1=list(Lk[i])[:k-2]
L2=list(Lk[j])[:k-2]
L1.sort()
L2.sort()#排序
if L1==L2:#比较ij前k-1个项若相同,和合并它俩
retList.append(Lk[i] | Lk[j])#加入新的k项集
return retList
def apriori(dataSetminSupport):
“““Apriori算法的主要逻辑函数,利用递推生成我们需要的所有频繁项集,并计算其支持度
dataSet为原始数据,minSupport为最小支持度“““
C1=createC1(dataSet)
D=list(map(setdataSet))
L1supportData=scanD(DC1minSupport)#利用k项集生成频繁k项集(即满足最小支持率的k项集)
L=[L1]#L保存所有频繁项集
k=2
while(len(L[k-2])>0):#直到频繁k-1项集为空
Ck=aprioriGen(L[k-2]k)#利用频繁k-1项集 生成k项集
LksupK= scanD(DCkminSupport) #从k项集中筛选出频繁k项集
supportData.update(supK)#保存新的频繁项集与其支持度
L.append(Lk)#保存频繁k项集
k+=1
return LsupportData#返回所有频繁项集,与其相应的支持度
def calcConf(freqSetHsupportDatabrlminConf=0.1):
“““计算并输出我们需要的各个项集的关联关系,即置信度
freqSet为我们要处理的单个频繁集,H为可以用来修建freqSet的所有子集构成的列表
supportData为之前得到的存储频繁项集和相应支持度的字典,brl为已有的规则集
minConf为控制输出数据量的最小支持度,我们这里将其定为0.1“““
prunedH=[]
for conseq in H:#后件中的每个元素
conf=supportData[freqSet]/supportData[freqSet-conseq]
if conf>=minConf:
print (freqSet-conseq‘-->‘conseq‘conf:‘conf)
brl.append((freqSet-conseqconseqconf))#添加入规则集中
prunedH.append(conseq)#添加入被修剪过的H中
return prunedH # 返回修建后的子集列表
def rulesFromConseq(freqSetHsupportDatabrlminConf=0.1):
“““递归逻辑函数,对于我们所有的频繁集,计算其和其修剪后的子集之间的置信度
freqSet为我们要处理的单个频繁集,H为可以用来修建freqSet的所有子集构成的列表
- 上一篇:配对交易python策略源码
- 下一篇:selenium爬取谷歌翻译结果
相关资源
- python实现SGBM图像匹配算法
- python实现灰度直方图均衡化
- scrapy_qunar_one
- Python学习全系列教程永久可用
- python简明教程.chm
- 抽奖大转盘python的图形化界面
- 双边滤波器实验报告及代码python
- python +MYSQL+HTML实现21蛋糕网上商城
- Python-直播答题助手自动检测出题搜索
- OpenCV入门教程+OpenCV官方教程中文版
- Python 串口工具源码+.exe文件
- Python开发的全栈股票系统.zip
- Python操作Excel表格并将其中部分数据写
- python书籍 PDF
- 利用python绘制散点图
- python+labview+No1.vi
- 老男孩python项目实战
- python源码制作whl文件.rar
- python3.5可用的scipy
- PYTHON3 经典50案例.pptx
- 计算机科学导论-python.pdf
- python模拟鼠标点击屏幕
- windows鼠标自动点击py脚本
- 鱼c小甲鱼零基础学python全套课后题和
- Python 练习题100道
- Practical Programming 2nd Edition
- wxPython Application Development Cookbook
- python 3.6
- Python 3.5.2 中文文档 互联网唯一CHM版本
- python3.5.2.chm官方文档
评论
共有 条评论