自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

leeshuheng的专栏

虚怀若谷 静若止水 顺其自然 无为无我

  • 博客(44)
  • 资源 (3)
  • 收藏
  • 关注

翻译 R语言中使用tensorflow

1  TensorFlowTensorFlow是一个使用数据流图(data flow graphs)进行数值计算的的开源软件库。图的节点代表数学计算,图的边代表与之对应的多维数组(tensor)。这个思路正好与我设计的一个系统相反。tf灵活的架构使你用单一API就能在台式机、服务器或移动设备上的多个CPU/GPU上进行计算。虽然tf最初是由Google的机器智能研究机构 Googl

2017-05-05 16:34:58 10583

原创 一个玩具—自制人脸识别

自己动手OpenCV提供了一些人脸识别的工具, 比如FaceRecognizer。但自制一个人脸识别器是件挺好玩的事情,我用kNN实现了一个。

2017-03-27 09:08:16 5285

原创 R语言中文情感分析包:cnSentimentR

该包使用jiebaR分词, svm[e1071]进行分类;包括三个函数:cnsr.prepare,cnsr.train,cnsr.predict目前还在开发中,功能不完整.请见: https://github.com/leeshuheng/cnSentimentR

2017-02-07 17:22:24 8474 1

原创 拓扑分析用于空间聚类

拓扑分析用于空间聚类在工作中我会遇到这样的问题:有一个城市中某种实体的地理位置信息,需要根据这些实体的不同分布密度,来对这个城市进行区域划分。那我们首先就要根据这些实体的位置进行聚类,以便得到不同密度分布的实体集合,进一步得到这个城市的区域划分。我使用R语言中的TDA package对位置信息进行聚类。实验的数据可以在这里下载:http://down

2016-11-03 10:55:52 3929

原创 使用R语言进行图像分类

使用R语言进行图像分类本文使用R语言,应用SVM(高斯核)[3]算法对JPEG图片进行二类分。SVM使用e1071包, 图像处理用imager包[1]。数据使用的是Caltech 101中的Faces和BACKGROUND_Google两类数据[2]。文章最后包含了实验的源代码。这篇blog还有个pdf版本,可在 http://download.csdn.net/m

2016-09-09 08:18:42 10151 1

原创 R 与 LaTeX

R 与 LaTeX    R 是一种编程语言,广泛的用于数据挖掘和统计分析中。她有很多实用的特性,比如她对LaTeX的支持。通过一些技术手段,R语言可以生成LaTeX脚本,并把计算结果和可视化图形信息包括在LaTeX脚本中。    LaTeX 是一个排版系统,在数学和其他科学领域有着广泛的应用,她最初是由Leslie Lamport开发。LaTeX把TeX作为格式化

2016-05-05 09:02:30 10245

原创 使用pagerank计算商业服务网络中节点的重要性

现实世界中有很多商业服务,在服务中消费者和服务提供者构成了一个网络(图)。大部分的服务网络都是无尺度网络,节点的degree是幂律分布这样的无尺度分布。也就是说,很少部分服务商向大量的消费者提供了大部分服务。在这样的无尺度网络中,很明显这少部分服务商是很重要的。但他们的重要性需要一种度量。    而且,随着共享经济的发展,线下线上的结合,有一些特定的服务网络在特定情况下

2016-04-13 13:18:15 2501

原创 POI推荐算法

POI推荐算法这里介绍的算法是基于地点相似度的POI推荐。该算法非常简单,在某些数据场景中十分有效。基本的想法是:    将POI名称作为标签处理    一群用户对某个地点感兴趣,那么这群用户中的一部分人感兴趣的其他地点可能与该地点相似;算法流程:1)输入地点a, 用户集合X,地点集合Y、用户和地点关系集合2)找到对a感兴趣的用户子集U;    我们

2015-05-08 09:55:46 15032 1

原创 红黑树(red black tree) Common Lisp 实现

学习Lisp的过程中,作为练习,我经常实现一些小东西。这个红黑树就是我玩Lisp时搞出来的东西。作为一个代码玩具,她的实现有些随意,尤其变量名。虽然只是一个代码玩具,但她完整的实现和演示了红黑树的所有主要功能。红黑树的定义和C++实现可以看这里:http://blog.csdn.net/leeshuheng/article/details/5937440在C++版本

2013-09-16 08:44:39 2783

原创 贝叶斯分类:Common Lisp实现

最近利用闲暇时间学习Common Lisp,作为编程实践,我实现了一个简陋的贝叶斯分类器(bayesian)。这只是一个代码玩具,没有实际的工程价值。文章最后我贴了这个贝叶斯的代码。贝叶斯公式如下:可以这样简单的推导出贝叶斯公式:代码的流程,首先是统计样本数据;然后根据bayesian定理,创建一个用于分类的模型;最后在用这个模型去对测试数据

2013-03-14 08:34:57 2578

原创 数据挖掘: Apriori算法

数据挖掘: Apriori算法1 概述1.1 Apriori算法是由Rakesh Agrawal和Ramakrishnan Srikan发明的一种数据挖掘算法。最初是解决找到transaction数据库中不同item关联规则的问题。2 算法2.1 基本概念I = {i1, i2, ..., im} 是由m个item组成的集合;D是多个transact

2012-08-16 08:59:45 2797

原创 数据挖掘:id3 算法

1 简述1.1    id3是一种基于决策树的分类算法,由J.Ross Quinlan在1986年开发。id3根据信息增益,运用自顶向下的贪心策略建立决策树。信息增益用于度量某个属性对样本集合分类的好坏程度。由于采用了信息增益,id3算法建立的决策树规模比较小,查询速度快。id3算法的改进是C4.5算法,C4.5算法可以处理连续数据,采用信息增益率,而不是信息增益。

2012-07-24 08:54:48 24555 3

原创 tcpdump抓取指定ip地址范围内的报文

用tcpdump可以抓取某个ip地址范围内的报文。例如:抓取目的地址范围是192.168.1.10 ~ 192.168.1.100的报文使用命令:    tcpdump -n -nn 'ip[16] == 192 and ip[17] == 168 and ip[18] == 1 and ip[19] > 9 and ip[19] ip[16]是取得ip协议偏移为16的那个字节

2012-07-09 15:50:07 22124

原创 k-means聚类算法

k-means作为一种聚类算法,是2006年评出的10大数据挖掘算法之一,应用广泛。k-means这个名字恰到好处的说明了算法的工作原理。该算法的目的就是要在n个对象中归纳出k种分类,而这是通过这样一种聚类迭代过程实现的。    (1)输入n个对象,并指定其中的k个为初始聚类中心;    (2)分别计算n个对象和k个中心的相似度;    (3)任意对象都有一个和其相似度最大

2012-06-11 09:03:09 3332

原创 Boyer-Moore模式匹配算法

BM算法是由Robert S. Boyer和J Strother Moore在1977年开发的一种快速字符串匹配算法。当然这里说的字符串不全指'abcd'这样的可读字符组成的串,它可以是一片连续的内存。在这里对该算法做简要描述。设pat是一个模式串, 我们要在串string里搜索模式串pat是否存在。设pat_len是pat的长度。设str_len是string的长度。

2012-02-24 15:45:41 2061

原创 hash表C++实现

仿照SGI扩展中的hash_set和hash_map实现了下面两个简化的模板类。她们的使用方法与stl中的容器类相似,支持插入,查找,删除,遍历等。成员函数名称和语义基本与stl中的容器类一致。迭代器的使用也与stl容器类的基本一致。main.cpp中的代码是个简单的测试用例,我写的有点乱。编译:g++ -g -W -Wall -Wextra -o mytest mai

2012-02-13 14:53:35 2367

原创 崩溃时打印堆栈调用日志

在GNU/Linux编程中,我们可能会遇到程序因为内存访问错误而崩溃或类似的问题。一般情况下,我们借助程序崩溃后生成的core文件来定位引起程序崩溃的位置。但有时我们无法在现场调试,只能依靠用户传回的一些日志文件的内容来定位程序错误的位置。如果这时日志中包含程序崩溃时的栈调用信息,那么对排除错误将会有些帮助。使用backtrace函数和addr2line程序可以帮助我们

2012-02-08 08:45:31 4206

原创 信号究竟发给谁

信号究竟发给谁Linux中进程和线程本是一个东西,在内核中都是由task_struct结构标示。两者都是由do_fork内核函数来启动,只是调用do_fork的参数不同。如果进程只有一个线程,那么发给该进程的信号显然只能发给这个线程;信号和信号处理函数是进程资源,那么当进程有多个线程时,信号究竟发给谁呢?我做了3个实验来探讨这个问题,实验所采用的平台如下:OS: f

2011-11-29 09:19:31 2180

原创 Linux字符终端彩色进度条

我在Linux字符终端上实现了两种有趣的彩色进度条。一种是采取渐进打印的动画效果,另一种是循环打印。用C语言和shell脚本实现了这两种方式,我不怎么擅长shell脚本,所以代码写得比较凌乱。两个程序没事儿的时候可以拿来解闷。具体的实现方式可以看后面的代码。测试环境:OS:    fedora 11gcc:   Red Hat 4.4.0-4shell: b

2011-11-16 10:01:33 3282

原创 最佳适配内存分配算法(二)

最佳适配内存分配算法(二)上次的bloghttp://blog.csdn.net/leeshuheng/article/details/6736194中的代码对最佳适配内存分配算法做了简单的演绎。由于现实中程序经常分配小内存块,且常常重复分配和释放相同大小的内

2011-09-14 08:21:33 6311

原创 GNU/Linux 编程中的定时器

GNU/Linux 编程中的定时器在Linux C/C++编程中GNU C库提供了多种定时器实现。主要有4种:1、alarm方式:    sigaction/signal, 和alarm等函数实现;2、setitimer方式:    sigaction/signal, setitimer/setitimer等函数实现;3、timer_create方式: 

2011-06-08 12:39:00 6390

原创 数字转换成指定进制的数字字符串

下面的函数将一个long型的整数转换为某个指定进制的数字字符串。正数和0的前面输出'+'号,负数的前面输出'-'号。如果指定8进制字符串则以'0'开头;如果指定16进制,则以'0x'或'0X'开头。可以指定类似16进制的数输出字母的大小写。编译:    g++ -g -W -Wall -Wextra -o mytest main.cpp执行:    ./myte

2011-11-14 11:12:51 1677

原创 计算 ip udp tcp 效验和

下面叙述的是IPv4的 ip udp tcp 效验和的计算。ip效验和计算相对简单,只需对ip协议头进行计算;ip协议头长20字节;udp协议头长8字节;tcp协议头长20~60字节;udp和tcp的校验和不仅要对整个ip协议负载(包括udp/tcp协议头和udp/tcp协议负载)进行计算,还要先对一个伪协议头进行计算。在计算效验和前,协议头效验和字段要清0。

2011-10-20 16:59:15 1348

原创 自旋锁

下面的代码实现了一个简陋的自旋锁。由于仅仅是用于实验的原型代码,所以可能包含许多错误和不适当的地方。如果在信号处理函数中使用该锁,可能会死锁。该代码用于Linux环境,在fedora11中测试过。spin_lock.h:============

2011-09-22 14:27:10 1402

原创 随机数生成

随机数生成根据指数分布实现随机数生成,首先看一个实际的例子。和女友分手了,我连她的影都找不着。只好给她打电话。可是她电话也不接。我只好耐心的一遍一遍的打。可是她始终不接。我每小时打10个电话。打了一整天。那我每隔几分钟打一个呢?指数分布可以用来

2011-09-15 08:22:03 1331

原创 最佳适配内存分配

下面的代码采用了最佳适配内存分配算法。有128个槽。将不同大小的内存块散列在相应的槽中。这些槽存放的内存块的大小是有序的。前64个槽用于存放小内存块,每个槽只存放一种大小的内存块。后64个槽用于存放大内存块,每个槽存放一定范围大小的内存块。槽的索引越大,它

2011-08-31 15:52:49 4233

原创 makefile

这是我编译一些C原型程序时用的makefile,这些程序一般用于学习和验证一些想法makefile:======================================================================PROG=mytestCC=gccCFLAGS=-g -W -Wall -Wextra  -std=gnu99sources:=

2011-06-15 08:56:00 1008

原创 pcap(Packet capture library)的简单应用

<br />pcap目前是一个应用广泛的针对网络接口数据包抓取的共享库。<br />该系统对数据抓取提供一个高层的接口,获得指定网络的全部<br />数据包,包括那些目的地址不是本机的数据包。<br /><br />下面的程序是一个简单的实验用例。它只是使用了pcap的一小<br />部分主要功能,实现对默认网络接口数据包的抓取,并实现了<br />简陋的不完全的分析。它可以被视为一个残疾版或毛坯版的<br />tcpdump。<br /><br />由于我认识上的不足和我在

2011-03-16 09:01:00 4711

原创 有趣的整数

一、    153 = 1^3 + 5^3 + 3^3     153 = 1! + 2! + 3! + 4! + 5!二、    145 = 1! + 4! + 5!三、    666 = 1^3 + 2^3 + 3^3 + 4^3 + 5^3 + 6^3 + 5^3 + 4^3 +3^3 + 2^3 + 1^3     666 = 2^2 + 3^2 + 5^2 + 7^2 + 11^2 + 13^2 + 17^2    666 = 3^6 - 2^6 + 1^6 四

2011-02-28 09:56:00 943

原创 内存泄漏检测

<br />我在Linux编程中通常使用三种方法检测内存泄漏。<br /><br />第一种方法是阅读程序源代码,打印和查看日志,观察分析程序的执行。<br /><br />第二种方法使用valgrind:<br />    假设名为mytest的程序可能有内存泄漏的情况。<br />    那么执行命令:<br />        valgrind -v --tool=memcheck --leak-check=full ./mytest<br />    valgrind会打印出

2010-12-14 09:28:00 910

原创 Linux glob 路径模式匹配

<br />glob库函数用于Linux文件系统中路径名称的模式匹配,<br />即查找文件系统中指定模式的路径。<br />注意,这不是正则表达式匹配,虽然有些相似,但还是<br />有点差别。<br /><br />编译:<br />gcc -std=c99 -g -W -Wall -Wextra -o mytest main.c<br />执行示例:<br />./mytest "./*.cpp" "./*.h" "./make*" "~/p*/p?ng"<br /><br

2010-12-09 09:11:00 11077 2

原创 机器生成中文句子

<br />自然语言处理有两种基本的方法:基于规则和基于统计。<br />马尔可夫统计模型在自然语言处理中被广泛的应用。马尔可夫链<br />由俄国数学家马尔可夫提出,利用条件概率对语言建立数学模型,<br />最初马尔可夫用它分析普希金的诗。<br /><br />我写了个玩具程序,它将一阶马尔可夫链和基于规则的一些方法<br />结合来实现机器生成中文句子。我把写的13篇博客修改了一下,<br />主要是删掉博文中包含的代码部分,并进行了手工分词。将这13<br />篇修改后

2010-11-23 09:28:00 3466 1

原创 数学家和程序员

<br />前日在CSDN上看到早些时候对STL之父的一篇专访,<br />http://dev.csdn.net/htmls/11/11440.html<br />由此想到了数学家和程序员思考问题出发点的差异。<br />虽然亚历山大说自己是程序员,但我从他的言语之<br />间还是看到了他数学家的背景,他和大多数程序员<br />思考问题的方式有所不同。<br /><br />多数程序员思考问题,解决编程中的实际问题都是以数据<br />为中心,以数据为思考的出发点。因为大多

2010-11-17 09:30:00 1888

原创 寂寞程序员

<br />感情始终打酱油,<br />收入还是那么糗。<br />看来只好耍单身,<br />无车无房无女友。<br /><br />与所有大龄单身程序员共勉。<br />祝大家节日快乐,早日获得幸福。

2010-11-11 09:10:00 1085 4

原创 字符串匹配:two-way算法

<br />字符串匹配是一维模式匹配的特例;是查找在字符串text中是否存在字符串pattern的一种操作。<br />字符串匹配的形式化定义大体如下:<br />    设字符集合A。text和pattern是定义在字符集合A上的两个字符串;设|text|是text的长度,<br />    |pattern|是pattern的长度。找到非负整数pos(pos < |text|-|pattern|),使等式:<br />        pattern[i] = text[pos+i]   

2010-10-25 10:57:00 4014

原创 红黑树(red black tree)

红黑树是满足下列红黑条件的二叉查找树1 根节点是黑色;2 叶节点是黑色;3 从根到任意叶节点有相同数量的黑节点(有相同的黑高度);4 红节点的子节点只能是黑节点;5 节点要么是红色,要么是黑色;二叉查找树是一种二叉树,它至多有两个子树。其中左子树所有节点的值小于它的值,右子树所有节点的值大于它的值。

2010-10-13 09:14:00 980

原创 快速排序(Quick sort)

在《编程珠玑》中看到作者的的quick sort的速度介于C的qsort和C++的sort之间。经过3次调优之后始终比C++的sort慢。我在作者的基础上又进行了若干次调优后,速度和C++的sort基本持平。

2010-10-11 14:10:00 919

原创 好代码

简单,和谐,统一,自恰。

2010-08-18 08:37:00 463

原创 简单数学程序

在我学习计算数论时写了3个玩具程序:第一个是求两个数的GCD(最大公约数)和LCM(最小公倍数),用的是欧几里德算法--第一个非平凡算法。第二个是用了Miller-Ribin强拟素性检测算法,概率性的检测一个整数是否是素数。第三个是用了Fermat因子分解算法,对一个整数实行因子分解。三个程序对整数的表示都是定长的,所以太大的会溢出。Fermat因子分解算法不是很有效,大正数分解很慢且有误差。

2010-08-17 08:35:00 801

原创 Linux inotify

inotify 是Linux的file system事件通知系统。用于监测指定目录内文件的创建,删除,修改,访问等操作。下面的代码是我学习过程中的实验代码,存在错误和不适当的地方。参考:inotify(7), Linux内核文档 Documentation/filesystems/inotify.txt编译:gcc -g -Wall -Wextra -std=c99 -o mytest main.c执行./mytest [指定一个目录]停止:Ctrl-C假定要监测

2010-08-16 08:41:00 860

spatial_data

用户blog

2016-11-03

image_class

blog的pdf版本。

2016-09-09

机器生成句子的源代码

我写了个玩具程序,它将一阶马尔可夫链和基于规则的一些方法 结合来实现机器生成中文句子。我把写的13篇博客修改了一下, 主要是删掉博文中包含的代码部分,并进行了手工分词。将这13 篇修改后的博文作为程序的语料库。

2013-01-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除