2012-11-19 70 views
-1
supportData = {('ELF'): 0.75, ('CAT'): 0.75, ('BAT', 'CAT', 'ELF'): 0.5, ('ARK', 'BAT'): 0.25, ('ARK', 'ELF'): 0.25, ('CAT', 'ELF'): 0.5, ('DOG'): 0.25, ('BAT', 'CAT'): 0.5, ('BAT', 'ELF'): 0.75, ('ARK'): 0.5, ('ARK', 'CAT'): 0.5, ('BAT'): 0.75} 

L = [('ARK'), ('CAT'), ('CAT'), ('ELF'),('ARK', 'CAT'), ('BAT', 'ELF'), ('BAT', 'CAT'), ('CAT', 'ELF'),('BAT', 'CAT', 'ELF')] 


for freqSet in L: 
    H = list(freqSet) 

    if len(H) == 1: 
     pass 
    else: 
     for conseq in H: 
      freqsetlist = list(freqSet) 
      freqsetlist.remove(conseq) 
      if len(freqsetlist) == 1: 
       conf = supportData[freqSet]/supportData[tuple(freqsetlist)[0]] 
       if conf >= 0.1: 
        print freqsetlist,'-->',conseq,'conf:',conf 
      else: 
       conf = supportData[freqSet]/supportData[tuple(freqsetlist)[:]] 
       if conf >= 0.1: 
        print freqsetlist,'-->',conseq,'conf:',conf 


KeyError: ('R','K') 

有人能指出爲什麼我得到這個錯誤嗎?當len(freqsetlist)> 1時發生錯誤。這就是當計算帶有3個元素的元組時關聯規則中的置信度計算

+0

[3周後(http://stackoverflow.com/questions/13137232/confidence-calculation-in-association - 規則),不,我們仍然不能。 –

回答

0

當一個元組只有一個元素時,你應該在它後面加一個逗號,所以它會被解釋爲一個元組,而不是作爲一個單獨的(括號)元素:

'CAT' == ('CAT') != ('CAT',) == tuple(['CAT']) 

由於兩個你supportDataL變量是目前混合字符串和元組(當你,我想,只是想有元組),這行代碼實例永遠不會運行:

if len(H) == 1: 
    pass 

更新:至於您的錯誤消息,採取第一個元素,('ARK'):你首先將它轉換爲列表(['A', 'R', 'K']),然後刪除第一個元素('A'),然後將結果轉換回元組 - 產生。當你試圖在你的supportData字典中(在你提到的同一行代碼中)查找它時,它不在那裏,因此KeyError

更正數據爲我解釋,並且將避免此特定錯誤:

supportData = {('ELF',): 0.75, ('CAT',): 0.75, ('BAT', 'CAT', 'ELF'): 0.5, ('ARK', 'BAT'): 0.25, ('ARK', 'ELF'): 0.25, ('CAT', 'ELF'): 0.5, ('DOG',): 0.25, ('BAT', 'CAT'): 0.5, ('BAT', 'ELF'): 0.75, ('ARK',): 0.5, ('ARK', 'CAT'): 0.5, ('BAT',): 0.75} 

L = [('ARK',), ('CAT',), ('CAT',), ('ELF',),('ARK', 'CAT'), ('BAT', 'ELF'), ('BAT', 'CAT'), ('CAT', 'ELF'),('BAT', 'CAT', 'ELF')] 
+0

錯誤在此行conf = supportData [freqSet]/supportData [tuple(freqsetlist)[:]]。其他一切正常工作 – user1785231

+0

這是我在答案中解釋的問題的結果。有關更多詳細信息,請查看上面的更新。如果我不清楚,請參閱[this](http://bugs.python.org/issue2817)。 – mgibsonbr