最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python使用Apriori算法進(jìn)行關(guān)聯(lián)性解析

 更新時(shí)間:2017年12月21日 11:16:02   作者:開貳錘  
這篇文章主要為大家分享了python使用Apriori算法進(jìn)行關(guān)聯(lián)性的解析,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

從大規(guī)模數(shù)據(jù)集中尋找物品間的隱含關(guān)系被稱作關(guān)聯(lián)分析或關(guān)聯(lián)規(guī)則學(xué)習(xí)。過程分為兩步:1.提取頻繁項(xiàng)集。2.從頻繁項(xiàng)集中抽取出關(guān)聯(lián)規(guī)則。

頻繁項(xiàng)集是指經(jīng)常出現(xiàn)在一塊的物品的集合。
關(guān)聯(lián)規(guī)則是暗示兩種物品之間可能存在很強(qiáng)的關(guān)系。
一個(gè)項(xiàng)集的支持度被定義為數(shù)據(jù)集中包含該項(xiàng)集的記錄所占的比例,用來表示項(xiàng)集的頻繁程度。支持度定義在項(xiàng)集上。
可信度或置信度是針對(duì)一條諸如{尿布}->{葡萄酒}的關(guān)聯(lián)規(guī)則來定義的。這條規(guī)則的可信度被定義為“支持度({尿布,葡萄酒})/支持度({尿布})”。

尋找頻繁項(xiàng)集

Apriori原理:如果某個(gè)項(xiàng)集是頻繁的,那么它的所有子集也是頻繁的。反過來,如果一個(gè)項(xiàng)集是非頻繁項(xiàng)集,那么它的所有超集也是非頻繁的。

Apriori算法是發(fā)現(xiàn)頻繁項(xiàng)集的方法。該算法首先生成所有單個(gè)物品的項(xiàng)集列表,接著掃描交易記錄來查看哪些項(xiàng)集滿足最小支持度要求,那些不滿足最小支持度的項(xiàng)集會(huì)被去除掉。然后對(duì)剩下來的集合進(jìn)行組合以生成包含兩個(gè)元素的項(xiàng)集。接下來重新掃描交易記錄,去掉不滿足最小支持度的項(xiàng)集,該過程重復(fù)進(jìn)行直到所有項(xiàng)集都被去掉。
Apriori偽代碼

當(dāng)列表中項(xiàng)的個(gè)數(shù)大于0時(shí):
    檢查數(shù)據(jù)以確認(rèn)每個(gè)項(xiàng)集都是頻繁的
    保留頻繁項(xiàng)集并構(gòu)建k+1項(xiàng)組成的候選項(xiàng)集的列表

從頻繁項(xiàng)集中挖掘關(guān)聯(lián)規(guī)則

當(dāng)可信度大于最小可信度時(shí),可以認(rèn)為是含有關(guān)聯(lián)規(guī)則的??梢杂^察到,如果某條規(guī)則不滿足最小可信度要求,那么該規(guī)則的所有子集也不會(huì)滿足最小可信度要求。
可以首先從一個(gè)頻繁項(xiàng)集開始,接著創(chuàng)建一個(gè)規(guī)則列表,其中規(guī)則右部只包含一個(gè)元素,然后對(duì)這些規(guī)則進(jìn)行測(cè)試,接下來合并,通過合并所有剩余規(guī)則右部來創(chuàng)建新的規(guī)則列表,其中規(guī)則右部包含兩個(gè)元素,以此類推。

每個(gè)頻繁項(xiàng)集:
    while(len(L)>1)
        (k規(guī)則列表)
        滿足最小置信度
        創(chuàng)建k+1規(guī)則

整體代碼:

import numpy as np
def loadDataSet():
  return [[1, 3, 4], [2, 3, 5], [1, 2, 3, 5], [2, 5]]

def createC1(dateSet):
  c1 = []
  for line in dateSet:
    for item in line:
      if not [item] in c1:
        c1.append([item])
  c1.sort()
  return list(map(frozenset,c1))

def scanData(data,ck,minSupport):#尋找滿足最小支持度的項(xiàng)集
  ssCnt = {}
  for tid in data:
    for can in ck:
      if can.issubset(tid):
        if can not in ssCnt.keys():
          ssCnt[can] = 0
        ssCnt[can] += 1
  numItems = len(data)
  retList = []
  supportData = {}
  for key in ssCnt.keys():
    support = ssCnt[key]/numItems
    if support >= minSupport:
      retList.append(key)
    supportData[key] = support
  return retList,supportData


def aprioriGen(Lk,k): #根據(jù)k-1項(xiàng)集生成k項(xiàng)集
  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):#生成頻繁項(xiàng)集
  c1 = createC1(dataSet)
  D = list(map(set,dataSet))
  l1,supportData = scanData(D,c1,minSupport)
  L = [l1]
  k = 2
  while(len(L[k-2])>0):
    ck = aprioriGen(L[k-2],k)
    lk,supk = scanData(D,ck,minSupport)
    k = k + 1
    L.append(lk)
    supportData.update(supk)
  return L,supportData
def generaterRules(L,supportData,minConf=0.7):#生成規(guī)則
  bigRuleList = []
  for i in range(1,len(L)):
    for freqSet in L[i]:
      H1 = [frozenset([item]) for item in freqSet]
      if i>1:
        rulesFromConseq(freqSet,H1,supportData,bigRuleList,minConf)
      else:
        calcConf(freqSet,H1,supportData,bigRuleList,minConf)
  return bigRuleList
def calcConf(freqSet,H,suppurtData,brl,minConf = 0.7):#計(jì)算滿足置信度的規(guī)則
  prunedH = []
  for conseq in H:
    conf = suppurtData[freqSet]/suppurtData[freqSet-conseq]
    if conf > minConf:
      brl.append((freqSet-conseq,conseq,conf))
      prunedH.append(conseq)
  return prunedH

def rulesFromConseq(freqSet,H,supportData,brl,minConf=0.7):#遞歸生成規(guī)則
  m = len(H[0])
  if len(freqSet)>=(m+1):
    Hmp1 = calcConf(freqSet,H,supportData,brl,minConf)
    if (len(Hmp1) > 1):
      Hmp1 = aprioriGen(Hmp1,m+1)
      rulesFromConseq(freqSet,Hmp1,supportData,brl,minConf)




data = [line.split() for line in open('mushroom.dat').readlines()]
L,support = apriori(data,minSupport=0.3)
for i in range(len(L)):
  for item in L[i]:
    if item & {'2'}:
      print(item)

代碼及數(shù)據(jù)集下載:Apriori

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python?pip特殊用法之pip?install?-v?-e?.命令詳解

    python?pip特殊用法之pip?install?-v?-e?.命令詳解

    這篇文章主要給大家介紹了關(guān)于python?pip特殊用法之pip?install?-v?-e?.命令的相關(guān)資料,文中通過圖文以及實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-09-09
  • Python計(jì)算三角函數(shù)之a(chǎn)sin()方法的使用

    Python計(jì)算三角函數(shù)之a(chǎn)sin()方法的使用

    這篇文章主要介紹了Python計(jì)算三角函數(shù)之a(chǎn)sin()方法的使用,是Python入門的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • python3.9之你應(yīng)該知道的新特性詳解

    python3.9之你應(yīng)該知道的新特性詳解

    這篇文章主要介紹了python3.9之你應(yīng)該知道的新特性詳解,需要的朋友可以參考下
    2021-04-04
  • 遍歷python字典幾種方法總結(jié)(推薦)

    遍歷python字典幾種方法總結(jié)(推薦)

    下面小編就為大家?guī)硪黄闅vpython字典幾種方法總結(jié)(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-09-09
  • Python3標(biāo)準(zhǔn)庫之threading進(jìn)程中管理并發(fā)操作方法

    Python3標(biāo)準(zhǔn)庫之threading進(jìn)程中管理并發(fā)操作方法

    這篇文章主要介紹了Python3標(biāo)準(zhǔn)庫之threading進(jìn)程中管理并發(fā)操作方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Python實(shí)現(xiàn)線性擬合及繪圖的示例代碼

    Python實(shí)現(xiàn)線性擬合及繪圖的示例代碼

    在數(shù)據(jù)處理和繪圖中,我們通常會(huì)遇到直線或曲線的擬合問題,本文主要介紹了Python實(shí)現(xiàn)線性擬合及繪圖的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-04-04
  • 詳解字符串在Python內(nèi)部是如何省內(nèi)存的

    詳解字符串在Python內(nèi)部是如何省內(nèi)存的

    這篇文章主要介紹了詳解字符串在Python內(nèi)部是如何省內(nèi)存的,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Python內(nèi)置函數(shù)reversed()用法分析

    Python內(nèi)置函數(shù)reversed()用法分析

    這篇文章主要介紹了Python內(nèi)置函數(shù)reversed()用法,結(jié)合實(shí)例形式分析了reversed()函數(shù)的功能及針對(duì)序列元素相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下
    2018-03-03
  • python光學(xué)仿真相速度和群速度計(jì)算理解學(xué)習(xí)

    python光學(xué)仿真相速度和群速度計(jì)算理解學(xué)習(xí)

    從物理學(xué)的機(jī)制出發(fā),波動(dòng)模型相對(duì)于光線模型,顯然更加接近光的本質(zhì);但是從物理學(xué)的發(fā)展來說,波動(dòng)光學(xué)旨在解決幾何光學(xué)無法解決的問題,可謂光線模型的一種升級(jí)
    2021-10-10
  • pytorch之深度神經(jīng)網(wǎng)絡(luò)概念全面整理

    pytorch之深度神經(jīng)網(wǎng)絡(luò)概念全面整理

    這篇文章主要介紹了pytorch之深度神經(jīng)網(wǎng)絡(luò)概念,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09

最新評(píng)論

龙山县| 涞源县| 酒泉市| 合川市| 东兰县| 苗栗县| 武乡县| 都兰县| 阿鲁科尔沁旗| 灵武市| 方正县| 弥勒县| 葫芦岛市| 新丰县| 大渡口区| 武穴市| 永清县| 禄丰县| 休宁县| 旺苍县| 兴海县| 巴林右旗| 依安县| 武安市| 多伦县| 河北区| 阿合奇县| 长寿区| 湟源县| 饶平县| 墨脱县| 尚志市| 土默特右旗| 赞皇县| 锡林郭勒盟| 延津县| 云龙县| 丰顺县| 神农架林区| 抚松县| 镇原县|