91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 8KB
    文件類型: .py
    金幣: 2
    下載: 1 次
    發(fā)布日期: 2021-07-25
  • 語言: Python
  • 標(biāo)簽: python??Apriori??

資源簡介

電商,物流,存儲,倉儲,商品關(guān)聯(lián)性分析,python,Apriori

資源截圖

代碼片段和文件信息

#?-*-?coding:?utf-8?-*-
“““
Created?on?Mon?Apr?16?09:55:00?2018

@author:?wzh
“““
#導(dǎo)入需要的模塊

import?pandas?as?pd
import?numpy?as?np

#函數(shù)定義

def?createC1(dataSet):
????“““利用原始數(shù)據(jù)生成1項(xiàng)集(包含一個(gè)元素的子集)
????dataSet為我們需要輸入的原始數(shù)據(jù)“““
????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每個(gè)元素轉(zhuǎn)換為hashable的frozenset
????return?C1

def?scanD(DckminSupport):
????“““掃描之前得到的k項(xiàng)集(包含k個(gè)元素的子集),輸出支持度大于最小支持度的頻繁k項(xiàng)集(最小支持度用來控制最后輸出的總數(shù)據(jù)量)和頻繁k項(xiàng)集的支持度
????D為我們的原始數(shù)據(jù),ck為之前得到的k項(xiàng)集,minSupport為我們希望用來控制數(shù)據(jù)量的最小支持度“““
????ssCnt={}?#新建字典存儲k項(xiàng)集和每個(gè)k項(xiàng)集出現(xiàn)的頻率
????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={}?#計(jì)算k項(xiàng)集的支持度,判斷是否大于最小支持度
????for?key?in?ssCnt:
????????support=ssCnt[key]/numItem
????????if?support>=minSupport:
????????????retList.insert(0key)
????????????supportData[key]=support
????????????
????return?retListsupportData#返回頻繁k項(xiàng)集,相應(yīng)支持度

def?aprioriGen(Lkk):
????“““利用遞推的方法,利用k-1項(xiàng)集的并集來生成k項(xiàng)集
????Lk為我們輸入的k-1項(xiàng)集“““
????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個(gè)項(xiàng)若相同,和合并它倆
????????????????retList.append(Lk[i]?|?Lk[j])#加入新的k項(xiàng)集?
????return?retList

def?apriori(dataSetminSupport):
????“““Apriori算法的主要邏輯函數(shù),利用遞推生成我們需要的所有頻繁項(xiàng)集,并計(jì)算其支持度
????dataSet為原始數(shù)據(jù),minSupport為最小支持度“““
????C1=createC1(dataSet)
????D=list(map(setdataSet))
????L1supportData=scanD(DC1minSupport)#利用k項(xiàng)集生成頻繁k項(xiàng)集(即滿足最小支持率的k項(xiàng)集)
????L=[L1]#L保存所有頻繁項(xiàng)集
????
????k=2
????while(len(L[k-2])>0):#直到頻繁k-1項(xiàng)集為空
????????Ck=aprioriGen(L[k-2]k)#利用頻繁k-1項(xiàng)集?生成k項(xiàng)集
????????LksupK=?scanD(DCkminSupport)?#從k項(xiàng)集中篩選出頻繁k項(xiàng)集
????????supportData.update(supK)#保存新的頻繁項(xiàng)集與其支持度
????????L.append(Lk)#保存頻繁k項(xiàng)集
????????k+=1
????return?LsupportData#返回所有頻繁項(xiàng)集,與其相應(yīng)的支持度

def?calcConf(freqSetHsupportDatabrlminConf=0.1):
????“““計(jì)算并輸出我們需要的各個(gè)項(xiàng)集的關(guān)聯(lián)關(guān)系,即置信度
????freqSet為我們要處理的單個(gè)頻繁集,H為可以用來修建freqSet的所有子集構(gòu)成的列表
????supportData為之前得到的存儲頻繁項(xiàng)集和相應(yīng)支持度的字典,brl為已有的規(guī)則集
????minConf為控制輸出數(shù)據(jù)量的最小支持度,我們這里將其定為0.1“““
????prunedH=[]
????for?conseq?in?H:#后件中的每個(gè)元素
????????conf=supportData[freqSet]/supportData[freqSet-conseq]
????????if?conf>=minConf:
????????????print?(freqSet-conseq‘-->‘conseq‘conf:‘conf)
????????????brl.append((freqSet-conseqconseqconf))#添加入規(guī)則集中
????????????prunedH.append(conseq)#添加入被修剪過的H中
????return?prunedH?#?返回修建后的子集列表

def?rulesFromConseq(freqSetHsupportDatabrlminConf=0.1):?
????“““遞歸邏輯函數(shù),對于我們所有的頻繁集,計(jì)算其和其修剪后的子集之間的置信度
????freqSet為我們要處理的單個(gè)頻繁集,H為可以用來修建freqSet的所有子集構(gòu)成的列表
???

評論

共有 條評論