xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

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

資源簡介

電商,物流,存儲,倉儲,商品關聯性分析,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的所有子集構成的列表
???

評論

共有 條評論