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

  • 大小: 7KB
    文件類型: .py
    金幣: 1
    下載: 0 次
    發布日期: 2021-05-28
  • 語言: Python
  • 標簽: 關聯規則??

資源簡介

西電數據挖掘作業——關聯規則aprior算法python實現,我自己在python3.6已經能夠成功實現,沒有問題

資源截圖

代碼片段和文件信息



def?loadDataSet():
???
????‘‘‘‘‘創建一個用于測試的簡單的數據集‘‘‘
????return?[[1?3?4?5]?[2?3?5]?[1?2?3?4?5]?[2?3?4?5]]


def?createC1(dataSet):
????‘‘‘‘‘
????????構建初始候選項集的列表,即所有候選項集只包含一個元素,
????????C1是大小為1的所有候選項集的集合
????‘‘‘
????C1?=?[]
????for?transaction?in?dataSet:
????????for?item?in?transaction:
????????????if?[item]?not?in?C1:
????????????????C1.append([item])
????C1.sort()
????#?return?map(?frozenset?C1?)
????#?return?[var?for?var?in?map(frozensetC1)]
????return?[frozenset(var)?for?var?in?C1]


def?scanD(D?Ck?minSupport):
????‘‘‘‘‘
????????計算Ck中的項集在數據集合D(記錄或者transactions)中的支持度
????????返回滿足最小支持度的項集的集合,和所有項集支持度信息的字典。
????‘‘‘
????ssCnt?=?{}
????for?tid?in?D:??#?對于每一條transaction
????????for?can?in?Ck:??#?對于每一個候選項集can,檢查是否是transaction的一部分?#?即該候選can是否得到transaction的支持
????????????if?can.issubset(tid):
????????????????ssCnt[can]?=?ssCnt.get(can?0)?+?1
????numItems?=?float(len(D))
????retList?=?[]
????supportData?=?{}
????for?key?in?ssCnt:
????????support?=?ssCnt[key]?/?numItems??#?每個項集的支持度
????????if?support?>=?minSupport:??#?將滿足最小支持度的項集,加入retList
????????????retList.insert(0?key)
????????supportData[key]?=?support??#?匯總支持度數據
????return?retList?supportData


def?aprioriGen(Lk?k):??#?Aprior算法
????‘‘‘‘‘
????????由初始候選項集的集合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)??#?構建初始候選項集C1
????#?D?=?map(?set?dataSet?)?????????????????????????????????#?將dataSet集合化,以滿足scanD的格式要求
????#?D=[var?for?var?in?map(setdataSet)]
????D?=?[set(var)?for?var?in?dataSet]
????L1?suppData?=?scanD(D?C1?minSupport)??#?構建初始的頻繁項集,即所有項集只有一個元素
????L?=?[L1]??#?最初的L1中的每個項集含有一個元素,新生成的
????k?=?2??#?項集應該含有2個元素,所以?k=2

????while?(len(L[k?-?2])?>?0):
????????Ck?=?aprioriGen(L[k?-?2]?k)
????????Lk?supK?=?scanD(D?Ck?minSupport)
????????suppData.update(supK)??#?將新的項集的支持度數據加入原來的總支持度字典中
????????L.append(Lk)??#?將符合最小支持度要求的項集加入L
????????k?+=?1??#?新生成的項集中的元素個數應不斷增加
????return?L?suppData??#?返回所有滿足條件的頻繁項集的列表,和所有候選項集的支持度信息


def?calcConf(freqSet?H?supportData?brl?minConf=0.7):??#?規則生成與評價
????‘‘‘‘‘
????????計算規則的可信度,返回滿足最小可信度的規則。
????????freqSet(frozenset):頻繁項集
????????H(frozenset):頻繁項集中所有的元素
????????supportData(dic):頻繁項集中所有元素的支持度
?????

評論

共有 條評論