pythonのcollectionsモジュールCounterクラス使用学習

6461 ワード

今日実験室で午后の素朴なベイズの基本的な理论を见て、前の私の多くの理论に対する学习の态度はあまり理解していないと言わざるを得なくて、これは今日の午后深く见る时とても骨が折れることを招いて、仕方なく途中で休むしかなくて、それから1つの具体的な実例を持ってこのような随所に见られるベイズの思想を勉强して、言わざるを得ません現実の生活の中で確率にかかわるところであればBayes理論を使って物事を解決することができます.今日勉強した例は素朴なベイズが間違ったスペルを直す問題です.もちろん、この文章の目的はこの理論を説明するためではありません.前のブログでその勉強した文章を転載しました.よく書けていて、分かりやすいです.今日は主に誤字訂正モデルで使われているpythonのクラスCounterについて学びました.このクラスはpython内蔵モジュールcollectionsのクラスで、使いやすいと言えます.最もよく使われる機能は、リスト、辞書、文字列などの要素の繰り返し回数を計算する容器であることです.よし、ほかはあまり言わないで、テストコードを直接見てください.補足する必要があるのはコードの中ですでに説明して、やはりよく理解して、以下はコードです:
#!/usr/bin/env python
#encoding:utf-8

'''
  :    python    collections
    collections     :
    :http://docs.python.org/2/library/collections.html
collections   Python 2.4       ,   dict、set、list、tuple            ,   :
deque:    。   2.4。
defaultdict:          ,           。   2.5。
namedtuple()  :    ,       。   2.6。
OrderedDict :    ,      。   2.7。
Counter : hashable    ,      。   2.7。
Antuor:    
'''

from collections import Counter
def collections_test():
    #Counter 
    #       ,       :key-value,key    ,value         
    string='we are family and we love peace.We have the Greatwall and the yellow river!'
    str_dict={'A':2,'B':5,'G':7,'E':90,'M':6,'N':6, 'x':20,'z':30}
    cou0 = Counter()#        Counter 
    print cou0
    cou1 = Counter(string)#        Counter 
    print 'cou1  :------>', cou1
    cou2 = Counter(str_dict)#       Counter 
    print 'cou2  :------>', cou2
    cou3 = Counter(A=1, B=2, x=23, y=34, z=45, o=-5, m=0)#                   
    print 'cou3  :------>', cou3
    print 'cou3          :'
    print sum(cou3.values())
    print ' cou3        :'
    print list(cou3)
    print ' cou3        :'
    print set(cou3)
    print ' cou3        :'
    print dict(cou3)
    print ' cou3      (elem, count)   :'
    print cou3.items()
    print '         4   :'
    print cou2.most_common()[:-4:-1]
    cou1.update('balabalabalabalabala')#  
    print 'b    ------>', cou1['b']
    print 'a    ------>', cou1['a']
    cou2.subtract('AA')#    ‘A’   0        key 
    cou2.subtract('MMMMMMMMMM')#    ‘M’       
    print 'A    ------>', cou2['A']
    print 'M    ------>', cou2['M']
    print 'cou2  :------>', cou2
    #  A      ,      del  
    del cou2['A']
    print 'cou2  :------>', cou2#     A key  
    #elements()  
    #            1   
    print list(cou3.elements())
    #            
    print 'cou2   cou3   :'
    print cou2+cou3
    print 'cou2   cou3   :'
    print cou2| cou3
    print 'cou2   cou3   :'
    print cou2 & cou3
    print 'cou2   cou3   :'
    print cou2 - cou3

collections_test()

次は結果です.
Counter()cou1は:------->>Counter({′:13,′e′:13,′a′:8,′l′:6,′r′:4,′w′:4,′h′:3,′v′:3,′v′:3,′d′:2,′i′:2,′o′:2,′o′:2,′n′:2,′y′:2,′!′:1,′.′.′:1,′G′:1,′W′:1,′c′:1,′f′:1,′m′:1,′m′:1,′p′:1})cou2は2,′p′:1,′p′:1})cou2は2であり,2は2,′p′:1,′p′:1:---->Counter({'E':90,'z':30,'x':20,'G':7,'M':6,'N':6,'B':5,'A':2})cou 3は、------->Counter({'z':45,'y':34,'x':23,'B':2,'A':1,'m':0,'o':-5})cou3のすべての要素のカウント総数は、100がcou3のキーをリストに変換する:['A','B','B','y','x','z','m','o']cou3のキーをセットに変換する:set(['A','B','m','m','o','y','x','z'])cou3のキーをリストに変換する:{'A':1,'B':1,'B':2,'y':34,'x':23,'z':45,'m':0,'o':-5}cou 3のキー値を(elem,count)形式に変換すると,[('A',1),('B',2),('y',34),('x',23),('z',45),('m',0),('o',−5)]取り出しカウント値が最小の上位4要素:[('A',2),('B',5),('N',6)]bの値が----->5 aの値が----->18 Aの値が----->−4 cou2が------->>Counter({'E':90,'z':30,'x':20,'G':7,'N':6,'B':6,'B':5,'A':0,'M':−4})cou2が:------->>Counter({E':90,'z':90,'z','z':,'z':90,'z','z':,'z':,'z':,'z':9,'z':,':30,'x':20,'G':7,'N':6,'B':5,'M':-4})['A', 'B', 'B', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z','z']cou2とcou3の和は、Counter({'E':90,'z':75,'x':43,'y':34,'B':7,'G':7,'N':6,'A':1})cou2とcou3が、Counter({'E':90,'z':45,'y':34,'x':23,'G':7,'N':6,'N':6,'A':5,'A':1})cou2とcou3が、Counter({'z':30,'z':30,'z':30,'z':30,'z':30,'z':30,'z':30,'z':30,'z':30,''x':20,'B':2})cou 2とcou 3の差は、Counter({'E':90,'G':7,'N':6,'o':5,'B':3})