自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xceman1997的专栏

基础知识、c/c++语言、自然语言处理技术

  • 博客(19)
  • 资源 (2)
  • 收藏
  • 关注

原创 【svm学习笔记】svm_理论基础5

【线性不可分问题 之 松弛变量】经过核函数变换,原则上已经能把绝大多数样本分开了(如果还不能大规模分开,那要查一查特征选择那块儿了,是不是抽取特征太少,或者抽取方法不对),剩下的少量样本还不能分开,怎么办?这里的办法是特殊样本特殊对待,如果样本很“离群”,我们就认为是噪声,不加理会;如果不太“离群”,我们就要多花精力去看看。不过思路是这样,怎么体现在目标优化函数上?这就引入了松弛变

2012-08-30 00:10:57 1001

原创 【svm学习笔记】svm_理论基础4

【线性不可分问题 之 核函数】上面讨论的都是线性可分问题,虽然最终也没看到解的样子或者解的方法,总之,我们假设已经可以解了。接下来,如果样本线性不可分,咋整?好办。记得从前图像处理里面有个小波变换,大概的意思就是时域效果不好的话,变换到复域效果就好了,变换的名称我记得叫傅里叶变换。在这里也是一样。如果我们在某个样本空间中找不到最优分类面,那么我们就想办法把他映射到高维空间去

2012-08-29 23:17:45 1022

原创 【svm学习笔记】svm_理论基础3

回顾一下上文的思路,对于线性可分问题,我们可以用超平面将训练样本分开。但是通常超平面有很多个,我们选择距离两类样本点几何间隔最大的那个,这样能够使得模型错误率的“上界”最小。而这个问题,有进一步的转化为求超平面法向量||w||的值最小的问题。好,今天就从这里开动。【线性可分问题 之 问题转化 之 凸二次规划】||w||表示向量w的“范数”,最常用的是二阶范数,怎么算呢?

2012-08-29 22:32:16 927

转载 探索推荐引擎内部的秘密:推荐引擎初探

csdn的排版我用的不熟,有些标题内容显示有问题,原文链接在这里。“探索推荐引擎内部的秘密”系列将带领读者从浅入深的学习探索推荐引擎的机制,实现方法,其中还涉及一些基本的优化方法,例如聚类和分类的应用。同时在理 论讲解的基础上,还会结合 Apache Mahout 介绍如何在大规模数据上实现各种推荐策略,进行策略优化,构建高效的推荐引擎的方法。本文作为这个系列的第一篇文章,将深

2012-08-29 13:31:43 842

原创 【svm学习笔记】svm_理论基础2

【线性可分问题 之 问题】先从最简单的情况说起,说线性可分问题。问题是这样的,至少可以想象是这样的:在二维空间中有一些点,分别属于两个不同的类别,如何在二维空间中找到这样一条直线,直线的一边是某一类别的点,直线的另一边是另一个类别的点?如果这样的直线存在多条,如何选择一条最“好”的直线?上面描述中,样本被描述成了二维空间的点;其实也可以是高维空间中的点,而一个向量来表征。类别,可以简单地用

2012-08-29 00:48:06 1530

原创 【svm学习笔记】svm_基础理论1

【写在前面】这两天因为工程需要,用到svm,好奇之下,也自学一下,顺便记些笔记。理论部分,主要参考的是网友Jasper的网文《svm入门》系列,原帖子见http://www.blogjava.net/zhenandaci/MyPosts.html。既然人家都写了,为啥我还要写?不是写给别人看得,是写给自己的。主要是理清自己的思路,毕竟svm的理论这么深厚,稍不留神,就不知道“走”到

2012-08-28 23:22:35 1067

原创 【Q&A】stl容器去除重复的元素

经常会有这种情况,例如有几个不同来源的词表,先后放入到一个容器中(如vector中),要求去除容器中重复的词条。通常就是两步:1. 排序;2. 去除相邻的重复节点。对于2,我从前都是用文本编辑器(ultraedit)去重,没有用程序做过。现在写了下,主要是理解unique函数。关键代码如下:// 1. sort the itemssort (ItemVec.begin(

2012-08-24 22:54:43 1288

原创 【Q&A】getline读取行的行尾处理

windows和linux对文本文件的行尾有不同的约定。在windows系统中,行尾包含了两个字符,回车(carriage return, '\t')和换行(line feed, '\n')。这两个字符来自于从前的电传打字机,分别表示将写位置重新定位在首端,并跳转到下一行。在linux和unix、以及mac系统中,只保留了换行符,而没有回车符。这也是一些mac上的文本文件到windows系统上就无

2012-08-24 16:26:26 2383

原创 【我要去面试】单向链表反转

又到一年一次的招聘季,很多莘莘学子该忙起来了,复习基础知识,搜索面试题。面试题里面比较经典的是单向链表反转,就是一个单向链表,就地反转。这个面试题主要考查:1. 基础知识(单向链表设计);2. 边界条件检查(空链表、是否遍历到链表尾、链表头的处理等);3. 代码风格等。这两天手痒,自己写了一个,调通。这个题稍稍费心思的地方是:到底需要多少个指针来存放当前节点以及后面的节点;以及,按照什

2012-08-22 22:12:48 1094

原创 【Q&A】getline读取文本文件的问题

很多时候,我们用getline函数读取文本文件的每一行,留待以后进行处理(如:用istringstream对象解析行中的内容),代码片段如下:ifstream in ("Test.txt");if (!in)return ;string sLine;while (getline (in, sLine)){// do s

2012-08-22 11:57:29 2209

原创 【Q&A】istringstream 重新设定输入字符串问题

需求是这样的:很多时候,我们会从文本文件中读取一行内容,并用流的方式对这行内容进行解析。从文本中读取某一行,用getline就很好完成,然后将这一行内容的string作为初始化参数,初始化istringstream对象,对istringstream对象用流的方式进行解析。典型的代码是这样的:string sLine;while (getline (in, sLine))  // i

2012-08-21 22:08:14 1754

原创 【Q&A】delete (free)如何知道被删除的数组的元组个数?

当delete某个元素的时候,我们可以想,根据数据的类型,就能够判断需要释放的内存的大小。不过当delete是一个数组的时候,语法是 delete [] p; 并不需要提供数组的元组个数。那么编译器是如何得知这个信息的呢? 上网上搜了一圈,总结成一句话:肯定存在某个地方了,这个地方对程序员是透明的,而且每个编译器的实现不一样。有些帖子说,这个信息存放在被分配内存的“紧前面”,我写了下面的程

2012-08-21 17:03:31 979

原创 【重新上本科】排序【调试环境】

上面列了几个排序算法的代码,这些代码都是经过debug,程序验证过的。我顺便也把验证的环境贴出来吧。很多东西,其实是写给自己看的。 一、随机数生成程序,生成一定数量的随机数,用于排序,结果记录在文件中。bool GenerateNum(const char *sFileOut, int iCount){if (iCount return false;of

2012-08-21 16:21:01 525

原创 【重新上本科】堆排序【下】

堆调整函数解决的问题是:当除了堆顶以外的元素都满足堆的条件,如何调整堆顶元素,使整个序列满足堆的条件。堆的条件,是啥?其实堆是棵二叉树,满足父节点的数值比两个儿子节点的数值大。那么如何解决上述问题呢?思路也很简单:将父节点与两个儿子节点比较,找到最大的那个,放到堆顶,将原来堆顶元素放到最大元素的原来位置,然后对这颗子树递归调用堆调整函数。更一般地说,对于堆中第i个节点,如何调整堆中的元

2012-08-21 15:51:19 701

原创 【重新上本科】堆排序【上】

堆排序很有意思。作为排序算法来讲,它和快速排序都是O(nlogn)的时间复杂度,都是就地排序,都是采用递归。两者差不多,既生瑜,何生亮?不过堆是一种很有用的数据结构,通过堆排序算法,可以学习堆这种数据结构,以后可能用得上。堆排序算法思路很简单:第一步,构建一个堆;第二步,取出堆顶;第三步,如果排序没完成,重复第一步。堆分为最大堆和最小堆,表示堆的顶点元素是整个序

2012-08-21 15:11:07 561

原创 【重新上本科】冒泡排序

关于冒泡排序,我就记住两点:1. 需要双层循环,循环下标要搞对;2. 大的元素要“沉底”或者小的元素要“浮上来”(按照从小到大排列),都行。刚刚自己写了一遍,发现:(1)其实1和2是相联系的,就是说内层循环遍历的方向、外层循环下标移动方向,与是“沉底”还是“浮上来”有关;(2)排序最终结果的排列方向(从小到大或者从大到小)与当前比较的比较条件有关。这段代码写的是:内层循环从

2012-08-20 23:40:45 554

原创 【重新上本科】快速排序【下】

在我的印象中,绝大多数的教科书讲解快速排序的时候,都用严蔚敏书中的方法,采用左右两个迭代指示器,从两个方向进行遍历比较。能不能只从一个方向进行遍历,遍历一遍就能完成交换任务呢?《算法导论》提供了一种方法。《算法导论》是从左到右遍历,设定两个指示器(从这个角度来说本质上与严蔚敏的方法一致),一个指示器指示当前遍历的位置,另一个指示的位置,该位置之前的元素(直到数组起始位置)的值都小于锚值

2012-08-20 22:54:01 479

原创 【重新上本科】快速排序【中】

上面的代码很罗嗦,关键在于锚值的处理上面绕了弯路。如何绕了弯路呢?我们还是简单回顾一下上述的过程:首先,我们设定第一个值是锚值,然后从第二个元素起,开始向后遍历,寻找第一个比锚值大的数值的位置;然后,从相反的方向,找到第一个比锚值小的数值的位置;接下来将两个值交换,重复这个过程,直到迭代指示器“相遇”。在这个过程中,锚值的位置,也就是数组的第一个元素并没有改变,它只是静静的等待两个迭代指示器相遇,

2012-08-20 22:09:44 696

原创 【重新上本科】快速排序【上】

去年,刚刚老同学庆祝本科毕业十周年。十年了,很多当年老师教的基础知识都忘记了。这几天捡起来再看看,复习一下,顺便写成博客。因为毕业后干的是码农的活儿,所以尽量用代码说话。 快速排序,在《算法导论》中是经典的分治算法,就是将问题分解成若干的子问题,子问题的解组成了整个问题的解。快速排序也是经典的递归算法的应用。 快速排序的函数原型通常定义如下: void QuickSor

2012-08-20 21:10:09 822

Addison Wesley - Applied C++

Addison Wesley - Applied C++

2011-02-17

空空如也

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

TA关注的人

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