今天在实验室看了一下午的朴素贝叶斯的基本理论,不得不说之前的我对很多理论的学习态度是不求甚解,这就导致了今天下午看深入的时候很是费劲,无奈中途只好停歇了,然后拿了一个具体的实例来学习这种随处可见的贝叶斯思想,不得不说,现实生活中只要是牵涉到概率的地方就都可以使用到Bayes理论来解决事情,今天学习的实例是朴素贝叶斯纠正错误拼写问题 ,当然这篇文章的目的不是说为了讲解这个理论,在前面的博客里转载了那个学习的文章,写得很不错,浅显易懂,今天主要是学习了一下在错误拼写纠正模型中使用到的python中的一个类Counter,这个类是python内置模块collections中的一个类,可以说很好用,最常用的功能莫过于在一个容器包括:列表、字典、字符串等中计算元素重复的次数,好了,别的就不多说了,直接看测试代码即可,需要补充的在代码中都已经给出来了说明,还是很好理解的,下面是代码:
'''
功能:测试使用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():
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()
print cou0
cou1 = Counter(string)
print 'cou1 为:------>', cou1
cou2 = Counter(str_dict)
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')
cou2.subtract('MMMMMMMMMM')
print 'A 的值为------>', cou2['A']
print 'M 的值为------>', cou2['M']
print 'cou2 为:------>', cou2
del cou2['A']
print 'cou2 为:------>', cou2
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, 't': 3, 'v': 3, 'd': 2, 'i': 2, 'o': 2, 'n': 2, 'y': 2, '!': 1, '.': 1, 'G': 1, 'W': 1, 'c': 1, 'f': 1, 'm': 1, 'p': 1})
cou2 为:------> Counter({'E': 90, 'z': 30, 'x': 20, 'G': 7, 'M': 6, 'N': 6, 'B': 5, 'A': 2})
cou3 为:------> Counter({'z': 45, 'y': 34, 'x': 23, 'B': 2, 'A': 1, 'm': 0, 'o': -5})
cou3中所有元素计数总数为:
100
将cou3中的键转为列表为:
['A', 'B', 'y', 'x', 'z', 'm', 'o']
将cou3中的键转为集合为:
set(['A', 'B', 'm', 'o', 'y', 'x', 'z'])
将cou3中的键转为列表为:
{'A': 1, 'B': 2, 'y': 34, 'x': 23, 'z': 45, 'm': 0, 'o': -5}
将cou3中的键值转为(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 的值为------> 0
M 的值为------> -4
cou2 为:------> Counter({'E': 90, 'z': 30, 'x': 20, 'G': 7, 'N': 6, 'B': 5, 'A': 0, 'M': -4})
cou2 为:------> Counter({'E': 90, '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, 'B': 5, 'A': 1})
cou2 和 cou3差集为:
Counter({'z': 30, 'x': 20, 'B': 2})
cou2 和 cou3之差为:
Counter({'E': 90, 'G': 7, 'N': 6, 'o': 5, 'B': 3})
相关知识
python常用命令(初学者:超详细)
python桌面宠物模块
Python之函数
超星尔雅《Python语言基础与应用》最新答案100分 – 扫地僧
Python3内置模块之玩出花儿的random随机方法小结
小菜鸟的python学习之路(7)
Python数据分析入门之教你怎么搭建环境
python宠物狗年龄
Python学习手册
编写宠物dog类python
网址: python之collections模块Counter类使用学习 https://m.mcbbbk.com/newsview798573.html
上一篇: java题:请使用任意一例排序算 |
下一篇: js document.writ |