摘要:
背景:当读取一个key value数据的时候,python的字典结构会造成内存使用扩10倍左右,无可容忍。此文解决这个问题 数据:word2vec训练的结果,word对应400维的词向量。词表共1.6G左右 解决方案:利用python的class array进行解决。 步骤:1、将原始数据,转化成k 阅读全文
2016年12月15日
2014年6月23日
摘要:
关于PythonPython是一种解释性、面向对象并具有动态语义的高级程序语言。它内建了高级的数据结构,结合了动态类型和动态绑定的优点,这使得...关于PythonPython是一种解释性、面向对象并具有动态语义的高级程序语言。它内建了高级的数据结构,结合了动态类型和动态绑定的优点,这使得它在快速应... 阅读全文
2013年9月26日
摘要:
python操作mysql数据库的相关操作实例# -*- coding: utf-8 -*-#python operate mysql databaseimport MySQLdb #数据库名称DATABASE_NAME = ''#host = 'localhost' or '172.0.0.1'HOST = ''#端口号PORT = ''#用户名称USER_NAME = ''#数据库密码PASSWORD = ''#数据库编码CHAR_SET = '' #初始化参数d 阅读全文
2013年7月23日
摘要:
本文是从 How to become a proficient Python programmer 这篇文章翻译而来。这篇文章主要是对我收集的一些文章的摘要。因为已经有很多比我有才华的人写出了大量关于如何成为优秀Python程序员的好文章。我的总结主要集中在四个基本题目上:函数式编程,性能,测试,编码规范。如果一个程序员能将这四个方面的内容知识都吸收消化,那他/她不管怎样都会有巨大的收获。函数式编程命令式的编程风格已经成为事实上的标准。命令式编程的程序是由一些描述状态转变的语句组成。虽然有时候这种编程方式十分的有效,但有时也不尽如此(比如复杂性) —— 而且,相对于声明式编程方式,它可能会显得 阅读全文
2013年7月17日
摘要:
最大熵是自然语言处理中经常用到的一种统计方 法。网上也有很多最大熵方面的工具包,目前大家用得最多的应该是张乐博士写的最大熵工具包了。该工具包既可以采用命令行形式运行,也可以直接调用接口函 数,为大家的研究工作带来了很大的方便。但是,对于刚接触到该工具包的人来说,使用起来还是有些麻烦的。一、命令行形式使用方法 1、利用命令行形式,首先要准备好特征文件。特征文件的格式在最大熵工具包的使用说明书(manual20041229.pdf)的P24。 特征文件中,一行就是一个事件(event),其格式首先是该event对应的类别label,然后是特征feature,两者都是string类型的。如果feat 阅读全文
摘要:
如果要修改列表,但是要保留原来列表的一份拷贝,就需要列表自我复制,这过程叫做克隆。克隆的结果是产生两个值一样,但却有不同标识符的列表。克隆的方法是利用列表的片断操作符:>>> x = [1, 3, 5, 7]>>> y = x[:]>>> print y[1, 3, 5, 7]>>> y[0] = 9>>> print y[9, 3, 5, 7]>>> print x[1, 3, 5, 7]>>> id(x)13161832>>> id(y)13075 阅读全文
2013年7月5日
摘要:
经Edwin Chen的推荐,认识了scikit-learn这个非常强大的python机器学习工具包。这个帖子作为笔记。(其实都没有笔记的意义,因为他家文档做的太好了,不过还是为自己记记吧,为以后节省若干分钟)。如果有幸此文被想用scikit-learn的你看见,也还是非常希望你去它们的主页看文档。主页中最值得关注的几个部分:User Guide几乎是machine learning的索引,各种方法如何使用都有,Reference是各个类的用法索引。S1. 导入数据大多数数据的格式都是M个N维向量,分为训练集和测试集。所以,知道如何导入向量(矩阵)数据是最为关键的一点。这里要用到numpy来协 阅读全文
摘要:
. 数据结构¶.1. 深入列表¶链表类型有很多方法,这里是链表类型的所有方法:list.append(x)把一个元素添加到链表的结尾,相当于 a[len(a):] = [x] 。list.extend(L)将一个给定列表中的所有元素都添加到另一个列表中,相当于 a[len(a):] = L 。list.insert(i, x)在指定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引,例如 a.insert(0, x) 会插入到整个链表之前,而 a.insert(len(a), x) 相当于 a.append(x) 。list.remove(x)删除链表中值为 x 阅读全文
2013年6月25日
摘要:
有些比较知名的,像 资源汇总的http://bbs.linuxtone.org/forum.php?mod=viewthread&tid=2133google的https://code.google.com/intl/zh-CN/edu/languages/google-python-class/社区之http://bbs.chinaunix.net/forum.php?mod=forumdisplay&fid=55IT公司面试手册:http://www.mianwww.com/上面三个名气应该比较大了,下面可能就不是这么知名了,从网上逛出来的:纯PYTHON练习网站:http 阅读全文
2013年6月7日
摘要:
下面这几条是我自己在写shell代码的时候,比较喜欢的几种写法,抛砖引玉。 1) 检查命令执行是否成功 第一种写法,比较常见:1234567echo abcdee | grep -q abcdif [ $? -eq 0 ]; thenecho "Found"elseecho "Not found"fi 简洁的写法:12345if echo abcdee | grep -q abc; thenecho "Found"elseecho "Not found"fi 当然你也可以不要if/else,不过这样可读性比较差:1 阅读全文
2013年5月20日
摘要:
今天发现了一个“宝贝”,就是Linux的screen命令,对于远程登录来说,不仅提供了类似于nohup的功能,而且提供了我非常喜欢的“多个桌面”的功能。平常开一个putty远程登录,经常需要在两个程序之间来回切换,怎么办?ctrl-z和fg、bg?这些太麻烦了。其实我们可以借助screen命令来实现轻松便捷的切换。我主要是参考了下面的两篇文章(附在结尾),我自己总结的方法是:“首先用screen [-S]命令建立一个session,然后就可以在这个session中建立多个window了。使用screen [-S]可以建立多个session,而每个session又可以建立多个window。在不同 阅读全文
2013年5月13日
摘要:
Python是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大且完善的通用型语言,已经有十多年的发展历史,成熟且稳定。Python 具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用。Python语言有非常简捷、清晰的语法特点,适合完成各种高层任务,可以在所有操作系统中运行。目前,基于这种语言的相关技术正在飞速的发展,用户数量急剧扩大,相关的资源非常多。Python的创始人为Guido van Rossum。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为 ABC 语言的一种继承。之所以选中 Python(大蟒蛇的意思)作 阅读全文
2013年5月5日
摘要:
Linux必学的命令Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在Linux系统上工作离不开使用系统提供的命令。要想真正理解Linux系统,就必须从Linux命令学起,通过基础的命令学习可以进一步理解Linux系统。不同Linux发行版的命令数量不一样,但Linux发行版本最少的命令也有200多个。这里笔者把比较重要和使用频率最多的命令,按照它们在系统中的作用分成下面六个部分一一介绍。◆ 安装和登录命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exi 阅读全文
2013年4月22日
摘要:
在 Python 中, 当需要对一个 list 排序时, 一般可以用 list.sort() 或者 sorted(iterable[, cmp[, key[, reverse]]]).其中:cmp(e1, e2) 是带两个参数的比较函数, 返回值: 负数: e1 < e2, 0: e1 == e2, 正数: e1 > e2. 默认为 None, 即用内建的比较函数.key 是带一个参数的函数, 用来为每个元素提取比较值. 默认为 None, 即直接比较每个元素.reverse 是一个布尔值, 表示是否反转比较结果.我以前在做比较复杂的排序时, 喜欢写一个定制的 cmp 函数. 当我 阅读全文
2013年4月3日
摘要:
tr(translate缩写)主要用于删除文件中的控制字符,或进行字符转换。语法:tr [–c/d/s/t] [SET1] [SET2]SET1: 字符集1SET2:字符集2-c:complement,用SET2替换SET1中没有包含的字符-d:delete,删除SET1中所有的字符,不转换-s: squeeze-repeats,压缩SET1中重复的字符-t: truncate-set1,将SET1用SET2转换,一般缺省为-t 1、去除重复的字符#将连续的几个相同字符压缩为一个字符$ echo aaacccddd | tr -s [a-z]acd$ echo aaacccddd | tr - 阅读全文
2013年4月2日
摘要:
1. random.random() 用于生成一个0到1的随机符点数: 0 <= n < 1.02. random.uniform(a,b) 用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限。如果a > b,则生成的随机数n: a <= n <= b。如果 a <b, 则 b <= n <= a。print random.uniform(10, 20) print random.uniform(20, 10) 3. random.randint(a,b) 用于生成sa一个指定范围内的整数。其中参数a是下限,参数b是上限,生成 阅读全文
摘要:
Python内置了一些非常有趣但非常有用的函数,充分体现了Python的语言魅力!filter(function, sequence):对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple(取决于sequence的类型)返回:>>> def f(x): return x % 2 != 0 and x % 3 != 0 >>> filter(f, range(2, 25)) [5, 7, 11, 13, 17, 19, 23]>>> def f(x): r 阅读全文
2013年4月1日
摘要:
1 lists=[35,20,12,34,12,24,34,55,27]2 print list(set(lists))3 #保留原list顺序4 sorted(set(lists),key=lists.index) 阅读全文
2013年3月30日
摘要:
导读:Hadoop实际是一种以数据为驱动的计算模型,结合MapReduce和HDFS,将任务运行在数据存放的计算节点上,充分利用了计算节点的存储和计算资源,同时也大大节省了网络传输数据的开销。Hadoop(某人儿子的一只虚拟大象的名字)是一个复杂到极致,又简单到极致的东西。说它复杂,是因为一个hadoop集群往往有几十台甚至成百上千台low cost的计算机组成,你运行的每一个任务都要在这些计算机上做任务的分发,执行中间数据排序以及最后的汇总,期间还包含节点发现,任务的重试,故障节点替换等等等等的维护以及异常情况处理。谁叫hadoop集群往往都是由一些平民计算机组成,没事儿罢个工什么的,实在是 阅读全文
2013年3月18日
摘要:
经常遇到的exception是:PipeMapRed.waitOutputThreads(): subprocess failed with code N"OS error code 1: Operation not permitted""OS error code 2: No such file or directory""OS error code 3: No such process""OS error code 4: Interrupted system call""OS error code 5 阅读全文
2013年3月17日
摘要:
前文说到使用统计学习方法进行文本分类就是让计算机自己来观察由人提供的训练文档集,自己总结出用于判别文档类别的规则和依据。理想的结果当然是让计算机在理解文章内容的基础上进行这样的分类,然而遗憾的是,我们所说的“理解”往往指的是文章的语义甚至是语用信息,这一类信息极其复杂,抽象,而且存在上下文相关性,对这类信息如何在计算机中表示都是尚未解决的问题更不要说让计算机来理解。利用计算机来解决问题的标准思路应该是:为这种问题寻找一种计算机可以理解的表示方法,或曰建立一个模型(一个文档表示模型);然后基于这个模型,选择各方面满足要求的算法来解决。用谭浩强的话说,程序,就是数据+算法。(啥?你不知道谭浩强是谁 阅读全文
摘要:
文本分类问题与其它分类问题没有本质上的区别,其方法可以归结为根据待分类数据的某些特征来进行匹配,当然完全的匹配是不太可能的,因此必须(根据某种评价标准)选择最优的匹配结果,从而完成分类。因此核心的问题便转化为用哪些特征表示一个文本才能保证有效和快速的分类(注意这两方面的需求往往是互相矛盾的)。因此自有文本分类系统的那天起,就一直是对特征的不同选择主导着方法派别的不同。最早的词匹配法仅仅根据文档中是否出现了与类名相同的词(顶多再加入同义词的处理)来判断文档是否属于某个类别。很显然,这种过于简单的方法无法带来良好的分类效果。后来兴起过一段时间的知识工程的方法则借助于专业人员的帮助,为每个类别定义大 阅读全文
摘要:
一个文本分类问题就是将一篇文档归入预先定义的几个类别中的一个或几个,而文本的自动分类则是使用计算机程序来实现这样的分类。通俗点说,就好比你拿一篇文章,问计算机这文章要说的究竟是体育,经济还是教育,计算机答不上,说明计算机弱爆了就打它的屁屁。 注意这个定义当中着重强调的两个事实。 第一,用于分类所需要的类别体系是预先确定的。例如新浪新闻的分类体系,Yahoo!网页导航的分类层次。这种分类层次一旦确定,在相当长的时间内都是不可变的,或者即使要变更,也要付出相当大的代价(基本不亚于推倒并重建一个分类系统)。 第二,一篇文档并没有严格规定只能被分配给一个类别。这与分类这个问题的主观性有关,例如... 阅读全文
2013年3月15日
摘要:
统计学习是关于计算机基于数据构建的概率统计模型并运用模型对数据进行预测和分析的一门科学,统计学习也成为统计机器学习。主要特点: 1、统计学习以计算机及网络为平台,是建立在计算机以及网络之上的 2、统计学习以数据为研究对象,是数据驱动的科学 3、统计学习的目的是对数据进行预测和分析 4、统计学习以方法为中心,统计学习方法构建模型并应用模型进行预测和分析 5、统计学习是概率论、统计学、信息论、计算理论、最优化理论和计算机科学等多个领域的交叉学科, 并且在发展中形成独立的理论体系和方法论 阅读全文
2013年3月14日
摘要:
当我们需要对一个随机事件的概率分布进行预测时,我们的预测应当满足全部已知的条件,而对未知的情况不要做任何主观假设。在这种情况下,概率分布最均匀,预测的风险最小。因为这时概率分布的信息熵最大,所以称之为“最大熵法”。最大熵法在数学形式上很漂亮,但是实现起来比较复杂,但把它运用于金融领域的诱惑也比较大,比如说决定股票涨落的因素可能有几十甚至上百种,而最大熵方法恰恰能找到一个同时满足成千上万种不同条件的模型。这里我们先不讨论算法(这里用的是ID3/C4.5),把一棵决策树建立起来再说。我们要建立的决策树的形式类似于“如果天气怎么样,去玩;否则,怎么着怎么着”的树形分叉。那么问题是用哪个属性(即变.. 阅读全文
2013年3月12日
摘要:
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!排序算法(Sorting Algorithm)是计算机算法的一个组成部分。排序算法是将一个序列按照大小顺序重新排列。排序是古老但依然富有挑战的问题。Donald Knuth的经典之作《计算机程序设计艺术》(The Art of Computer Programming)的第三卷就专门用于讨论排序和查找。从无序到有序,从统计物理的角度看,就是减小了系统的熵值,增加了系统的有序度。有序这一特征是关于系统的非常有用的先验知识。因此,排序算法可以作为其他快速算法的基础,比如二分法就是基于 阅读全文
摘要:
转原网址:http://www.w3cfuns.com/forum.php?mod=viewthread&tid=1052&from=portal今天看到这篇文章。写的非常有意思。发现自己才处于"入室"阶段。【背景】如果你是刚进入web前端研发领域,想试试这潭水有多深,看这篇文章吧;如果你是做了两三年web产品前端研发,迷茫找不着提高之路,看这篇文章吧;如果你是四五年的前端开发高手,没有难题能难得住你的寂寞高手,来看这篇文章吧;web前端研发工程师,在国内是一个朝阳职业,自07-08年正式有这个职业以来,也不过三四年的时间。这个领域没有学校的正规教育,没有行 阅读全文
2013年3月11日
摘要:
#if 0 statements#endif在#if和#endif之间的程序段可以有效的在程序中删除,即使这段代码之间存在注释也无妨,所以这种方法更安全。 阅读全文
摘要:
最近有些迷茫,我到底想要些什么呢。。。。。。 阅读全文
2013年3月8日
2013年3月6日
摘要:
说明:判断对象object是否包含名为name的特性(hasattr是通过调用getattr(ojbect,name)是否抛出异常来实现的)。参数object:对象。参数name:特性名称。示例:>>> hasattr(list, 'append')True>>> hasattr(list, 'add')Falsehash(object)说明:如果对象object为哈希表类型,返回对象object的哈希值。哈希值为整数。在字典查找中,哈希值用于快速比较字典的键。两个数值如果相等,则哈希值也相等。参数object:对象。示例:& 阅读全文
摘要:
find 命令概览Linux 下find命令在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所 以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统(NFS),find命令在该文件系统中同样有效,只你具有 相应的权限。在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指 30G字节以上的文件系统)。1.命令格式:findpathname-options[-print-exec-ok...]2.命令功能:用于在 阅读全文
2013年3月5日
摘要:
根据函数命名而定如果一个 Python 函数,类方法,或属性的名字以两个下划线开始 (但不是结束),它是私有的;其它所有的都是公有的。 Python 没有类方法保护的概念 (只能用于它们自已的类和子类中)。类方法或者是私有(只能在它们自已的类中使用) 或者是公有 (任何地方都可使用)。 阅读全文
2013年3月4日
摘要:
前两篇文章介绍了Hadoop Streaming框架的使用方法。由于篇幅所限,并没有介绍其中的高级使用方法,但是有一些用法还是相当常见的。今天对一些高级用法进行一个简单的说明,希望能给大家一些启发。 1 使用cacheFile分发文件 如果文件(如字典文件)存放在HDFS中,希望计算时在每个计算节点上将文件当作本地文件处理,,可以使用-cacheFile hdfs://host:port/path/to/file#linkname选项在计算节点缓存文件,Streaming程序通过./linkname访问文件。 例如: hadoop = `which hadoop` $hadoop... 阅读全文
摘要:
上一篇文章介绍了Streaming的各种参数,本文具体介绍使用方法。提交hadoop任务示例:$HADOOP_HOME/bin/hadoop streaming \-input /user/test/input -output /user/test/output \-mapper “mymapper.sh” -reducer “myreducer.sh” \-file/home/work/mymapper.sh \-file /home/work/myreducer.sh \-jobconf mapred.job.name=”file-demo”上面的命令提交了一个hadoop任务,输出和输入 阅读全文
摘要:
Streaming简介Streaming框架允许任何程序语言实现的程序在Hadoop MapReduce中使用,方便已有程序向Hadoop平台移植。因此可以说对于hadoop的扩展性意义重大,今天简单说一下。Streaming的原理是用Java实现一个包装用户程序的MapReduce程序,该程序负责调用MapReduce Java接口获取key/value对输入,创建一个新的进程启动包装的用户程序,将数据通过管道传递给包装的用户程序处理,然后调用MapReduce Java接口将用户程序的输出切分成key/value对输出。Streaming优点1 开发效率高,便于移植只要按照标准输入输出格式 阅读全文
2013年3月1日
摘要:
什么是最大熵熵(entropy)指的是体系的混乱的程度,它在控制论、概率论、数论、天体物理、生命科学等领域都有重要应用,在不同的学科中也有引申出的更为具体的 定义,是各领域十分重要的参量。熵由鲁道夫·克劳修斯(Rudolf Clausius)提出,并应用在热力学中。后来在,克劳德·艾尔伍德·香农(Claude Elwood Shannon)第一次将熵的概念引入到信息论中来。在信息论中,熵表示的是不确定性的量度。信息论的创始人香农在其著作《通信的数学理论》中提出了建立在概率统计模型上的信息度量。他把信息定义为“用来消除不确定性的东西”。最大熵原理是在1957 年由E 阅读全文
2013年2月27日
摘要:
#!/usr/bin/env python#encoding: utf8##import threadingfrom time import ctimeimport timeclass MyThread(threading.Thread): def __init__(self, func, args, name=''): threading.Thread.__init__(self) self.name = name self.func = func self.args = args def run(self): ... 阅读全文
摘要:
创建一个“队列”对象import Queuemyqueue = Queue.Queue(maxsize = 10)Queue.Queue类即是一个队列的同步实现。队列长度可为无限或者有限。可通过Queue的构造函数的可选参数maxsize来设定队列长度。如果maxsize小于1就表示队列长度无限。将一个值放入队列中myqueue.put(10)调用队列对象的put()方法在队尾插入一个项目。put()有两个参数,第一个item为必需的,为插入项目的值;第二个block为可选参数,默认为1。如果队列当前为空且block为1,put()方法就使调用线程暂停,直到空出一个数据单元。如果block为0 阅读全文
2013年2月25日
摘要:
import sqlite3 def sqlite_basic(): # Connect to db conn = sqlite3.connect('test.db') # create cursor c = conn.cursor() # Create table c.execute(''' create table if not exists stocks (date text, trans text, symbol text, qty real, price real) ... 阅读全文