今天在实验室看了一下午的朴素贝叶斯的基本理论,不得不说之前的我对很多理论的学习态度是不求甚解,这就导致了今天下午看深入的时候很是费劲,无奈中途只好停歇了,然后拿了一个具体的实例来学习这种随处可见的贝叶斯思想,不得不说,现实生活中只要是牵涉到概率的地方就都可以使用到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 cou0cou1 = Counter(string)#以字符串形式创建Counter类print 'cou1 为:------>', cou1cou2 = Counter(str_dict)#以字典形式创建Counter类print 'cou2 为:------>', cou2cou3 = Counter(A=1, B=2, x=23, y=34, z=45, o=-5, m=0)#以类字典形式创建即使用键值组合直接创建print 'cou3 为:------>', cou3print '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+cou3print 'cou2 和 cou3并集为:'print cou2| cou3print 'cou2 和 cou3差集为:'print cou2 & cou3print 'cou2 和 cou3之差为:'print cou2 - cou3collections_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之collections模块Counter类使用学习相关推荐

  1. python库-collections模块Counter类

    Counter类主要是用来跟踪值出现的次数.它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value. demo: all_words = [] # 列表里面是汉字(可 ...

  2. 华为python673集_python库-collections模块Counter类

    Counter类主要是用来跟踪值出现的次数.它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value. demo: all_words = [] # 列表里面是汉字(可 ...

  3. Python中Collections模块的Counter容器类使用教程

    Python中Collections模块的Counter容器类使用教程 1.collections模块 collections模块自Python2.4版本开始被引入,包含了dict,set,list, ...

  4. python:collections模块

    Counter类 介绍:A counter tool is provided to support convenient and rapid tallies 构造:class collections. ...

  5. Python中collections模块

    目录 Python中collections模块:模块实现了特定目标的容器,以提供Python标准内建容器 dict.list.set.tuple 的替代选择. Counter:字典的子类,提供了可哈希 ...

  6. python中collections模块_Python的collections模块

    python的collections模块 collections模块 Counter:字典的子类,提供了可哈希对象的计数功能 常用方法: elements():返回一个迭代器,每个元素重复计算的个数, ...

  7. Python的collections模块中namedtuple结构使用示例

    namedtuple顾名思义,就是名字+元组的数据结构,下面就来看一下Python的collections模块中namedtuple结构使用示例 namedtuple 就是命名的 tuple,比较像 ...

  8. python的collections模块的学习

    转发连接:https://www.cnblogs.com/mrchige/p/6379831.html 转发用于自己学习,并无其他商用 Collections 模块 知识点 Counter 类 def ...

  9. 【Python基础】Python之collections库-Counter

    一.模块概述 1.模块作用 官方说法:collections模块实现了特定目标的容器,以提供Python标准内建容器dict ,list , set , 和tuple的替代选择. 通俗说法:Pytho ...

  10. python基础教程:Counter类

    Counter类的目的是用来跟踪值出现的次数.它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value.计数值可以是任意的Interger(包括0和负数).Counte ...

最新文章

  1. C语言网络编程:TCP编程模型
  2. asp.net MVC 过滤器使用案例:统一处理异常顺道精简代码
  3. 如何解决tmux中Anaconda虚拟环境下的python版本不正确的问题
  4. Javascrip—前端本地存储讲解(16)
  5. 交叉编译openssl不修改Makefile的方法
  6. python 字符串操作速度_强者一出,谁与争锋?与Python相比,C+的运行速度究竟有多快?|python|编程语言|字符串|示例|算法...
  7. sql server 快照_添加新文章,删除文章,更改快照文件夹路径和SQL Server复制中的数据筛选器行
  8. 关于使用stanfordcorenlp一直运行不报错的解决方法
  9. 服务器哪种系统最好,云服务器哪种系统好用
  10. VS2010 没有C#或者其他模板怎么办,不用重装
  11. 二维数组及以上维度的数组,本质是一维数组?(C语言)
  12. 【设计模式】Iterator设计作业-设计LinkedList的iterator
  13. C++ Lib的生成与调用 生成dll,lib快速的寻找方法
  14. 【语音隐藏】基于matlab LSB语音信息隐藏【含Matlab源码 577期】
  15. java基本数据类型之间的转换
  16. 解决select2插件下拉搜索框,输入拼音能够匹配中文汉字的问题
  17. 京东网站页面编写(HTML、CSS、JS),包括京东秒杀的倒计时、轮播图等功能
  18. 新时代程序员主流开发工具一览
  19. 北大才女笔记:这样学习线性回归和梯度下降(上篇)
  20. 基于PaddleSeg实现眼底血管分割——助力医疗人员更高效检测视网膜疾病

热门文章

  1. 从零开始搭建ELK+GPE监控预警系统
  2. tomcat中开启SSL
  3. 第三章、获取书籍信息
  4. Humidex--POJ 3299
  5. Xcode中查看宏在预处理阶段的展开
  6. python安装whl文件的注意事项(windows系统)
  7. SVM支撑向量机原理
  8. 该学学数据结构了,不会数据结构真是寸步难行啊。。。。。
  9. Widget改变大小
  10. ActivityGroup和TabActiviy的差异性?