-6
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

Output

KeyError: ('R','K')

このエラーが発生する理由を誰かが指摘できますか? len(freqsetlist) > 1 の場合にエラーが発生するようです。それは 3 要素のタプルを計算する場合です。

4

2 に答える 2

4

これがオブジェクトの表現です。別の表現が必要な場合は、自分で作成する必要があります。

>>> k = ['van']
>>> "({})".format(", ".join(k))
'(van)'

これは、オブジェクトの Python 表現をプログラムの一部として使用していることを意味することに注意してください。これは悪い考えであり、デバッグを目的とした Python の表現を試して使用するのではなく、必要なものを常に手動で構築する必要があります。

編集: コンマは、Python がタプルであることを示す方法です。括弧は、デフォルトではタプルではなく操作のグループ化を表すためです。独自のタプル サブクラスを作成し、本当に必要な場合は__repr__()/を変更することもできますが、それは信じられないほど無意味です (オブジェクトに評価される必要がある場合は非 Pythonic です)。__str__()__repr__()

于 2012-10-30T10:40:30.400 に答える
0
  supportData = {('nas','fat'): 0.5, ('nas'): 1.0, ('fat'):0.6, ('van'):0.72, ('jos'):0.55,('van','jos'):0.10}

  itemSets = [('nas','fat'),('van','jos')]

  for freqSet in itemSets: H = [''.join(list(item)) for item in freqSet]

  for conseq in H:

    freqsetlist = list(freqSet)
    freqsetlist.remove(conseq)
    conf = supportData[freqSet]/supportData[tuple(freqsetlist)[0]]
于 2012-10-30T12:00:05.773 に答える