自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(272)
  • 资源 (4)
  • 收藏
  • 关注

原创 Tricks(十七) —— 数组与字典(map)

(1)数组也能实现一种映射(map),将下标映射为下标对应的值,数组和字典甚至映射的形式都是一样的,都是使用中括号。arr[0] = 1;m["InsideZhang"] = 23;(2)数组能做的事,字典都能完成;而字典能做的事,数组却未必能。也即数组是 key 受限(必须为无符号整型)的字典。或者说字典是下标增强的数组。(3)下标之于数组,如同 key 之于字典,不过数组的下标只可以是无符

2016-03-31 23:43:23 1049

原创 Python 标准库—— datetime(运行时间的判断)

Python 内置的时间处理库。

2016-03-31 22:52:30 3251

原创 机器学习基础(三十七) —— 处理类别特征

当类别特征仍保持原始形式时,其取值来自所有可能取值构成的集合而不是一个数字,故不能作为输入。当各个取值之间是没有顺序关系的并列关系,这样的类别特征称为 名义(nominal)变量。相反,那些存在顺序关系的(比如评级,评级5的会好于评级1的),则被称为 有序(ordinal)变量。将类别特征表示为数字形式,常可借助 1-of-k 这样的编码方法进行。假设变量的取值有 k 个,如果对这些值用 1 到 k

2016-03-31 22:42:29 4133

原创 机器学习基础(三十六)—— 非规整数据(值缺失、异常值)的处理

(1)非规整(2)值缺失(3)异常值(outlier)一般来说,现实中的数据会存在信息不完整、数据点缺失和异常值的情况,理想情况下,我们会去尝试修复非规整数据,但很多数据集都源于一些难以重现(不可再现)的收集过程(比如网络活动数据和传感器数据),因此实际上很难修复。值缺失和异常值也很常见,且处理方式可与非规整信息类似。总的来说,大致的处理过程如下:(1)过滤掉或删除非规整或有值缺失的数据:这

2016-03-31 21:53:06 3768

原创 Spark 基础 —— RDD(一)

Spark 为 RDD 提供的成员函数(1).stats()序列的数字特征(stats:statistics),包括(count:计数,mean:均值,stdev:标准差,max:最大,min:最小值)

2016-03-31 19:06:37 1274

原创 Python debug —— invalid literal for int() with base 10

异常出现的直接原因即是,对于一个浮点数的字符('1.4'),直接使用 int 进行强制类型转换:>>> int('1.5')ValueError: invalid literal for int() with base 10: '1.5'>>> int('1.0')ValueError: invalid literal for int() with base 10: '1.0'也即,使用 in

2016-03-31 18:31:50 62851

原创 实用的 Python 之 feedparser

feedparser 号称是一个 universal feed parser,使用它我们可轻松地实现从任何 RSS 或 Atom 订阅源得到标题、链接和文章的条目了。>>> import feedparser为了建立直观,首先来看一个标准的 item:<item><title><![CDATA[厦门公交车放火案死者名单公布<br/>警方公布嫌犯犯罪证据]]></title><link>http:

2016-03-30 23:44:59 8971

原创 Python 基础 —— pip 的使用(修改国内源)

pip 自身的更新python -m pip install --upgrade pip

2016-03-30 22:05:55 5812

原创 机器学习基础(三十五)—— 协同过滤(从匹配用户到匹配商品)

考虑如下的用户对影片的打分,由嵌套字典定义:critics = {'Lisa Rose': {'Lady in the Water': 2.5, 'Snakes on a Plane': 3.5, 'Just My Luck': 3.0, 'Superman Returns': 3.5, 'You, Me and Dupree': 2.5,

2016-03-30 21:56:44 1533

原创 机器学习基础(三十四)—— 协同过滤(之获得推荐)

为未被某人评分的电影的进行打分,我们当然可以查找品味与此人最为接近(依据相似性度量)的人的相应评分,但是这样做过于简单和随意(permissive)。这种做法的问题在于:我们会找到一个热衷某部电影的古怪评论者,而根据 topMatch 的结果,所有其他的评论者都不看好这部电影。也即将评分完完全全依赖于一个未知可信度的人的评分是有风险的。所以一种稳妥的做法即是根据用户之间的相似度对打分进行加权平均(w

2016-03-30 21:41:09 1034

原创 机器学习基础(三十三)—— 皮尔逊相关度评价

除了欧几里得距离,还有一种更复杂一些的方法可以用来判断人们兴趣的相似度(相似一定发生在两个之间)。那就是皮尔逊相关系数,该相关系数是判断两组数据与某一直线拟合程度的一种度量。它在数据不是很规范(normalized)的时候(比如,某影评者对影片的评价总是相对于平均水平偏离很大时),会倾向于给出更好的结果。如果某人总是倾向于给出比另一个人高的分值,而二者的分差又始终保持一致,也即二者呈线性关系,则会得

2016-03-30 11:46:02 2330

原创 使用 IDEA 创建 Scala 工程

(1)打开 IDEA[root@hadoop idea] ./bin/idea.sh(2)File ⇒ New ⇒ Project … ⇒ 选择 Scala填写工程名 选择 Scala-SDK(就是解压后的 Scala 文件夹)(3)File ⇒ Project Structure… ⇒ Modules,在 src 原下创建如下文件夹 (4)导入 Spark 的包,在 【Project

2016-03-30 10:05:28 7897

原创 【剑指 offer】(十)—— 二进制形式 1 的个数

可能引起死循环的解法int numOf1(int n){ int cnt = 0; while (n) { if (n & 1) ++cnt; n >>= 1; } return cnt;}把整数右移一位和把整数除以 2 在数学上是等价的,那上面的代码可以把右移运算换成除以 2 吗?答案是否定的。因为

2016-03-29 21:54:08 967

原创 【剑指 offer】—— 为公司员工的年龄排序

快速排序虽然总体的平均效率是最好的,但也不是在任何时候都是最优的算法。比如数组本身已经是排好序了,而每一轮排序的时候都是以最后一个数字作为比较的标准,此时快速排序的效率只有 O(n2)O(n^2)。因此在这种场合快速排序就不是最优的选择。考虑如下的场景,如何以时间效率 O(n)O(n) 实现对公司员工年龄的排序,公司共有几万名员工。其实公司员工的年龄只在一个很小的区间内变化(range),又因为有那

2016-03-29 21:11:57 1430

原创 【剑指 offer】—— 快速排序

两个辅助函数:// 生成区间内的随机整数int RandInRange(int s, int e, unsigned seed=time_t(0)){ srand(seed); return rand()%(e-s)+s;}void Swap(int& a, int& b){ int tmp = a; a = b; b = tmp;}分区函数:int partit

2016-03-29 20:33:38 1450

原创 Trick(十六)—— 随机数的生成

最常见的一个随机数生成即为,生成 [start, end) 区间内的随机数:int RandInRange(int s, int e, unsigned seed=time_t(0)){ srand(seed); return rand() % (e - s) + s;}

2016-03-29 19:45:25 981

原创 哈希表(hash table)及其应用举例

哈希表最主要的有点在于我们利用它能够在 O(1)O(1) 时间查找某一元素,是效率最高的查找方式,其缺点是需要额外的空间实现哈希表。

2016-03-29 17:20:46 1303

原创 【剑指offer】(七)—— 用两个栈实现队列

题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead,分别完成在队尾插入节点和在队列头部删除节点的操作。template<typename T>class CQueue{public: void appendTail(const T& elem); T deleteHead();private: stack<T

2016-03-29 17:16:27 947

原创 机器学习基础(三十二) —— 使用 Apriori 算法进行关联分析

Apriori 在拉丁语中指“来自以前”。当定义问题时,通常会使用先验知识或者假设,这被称作“一个先验”(a priori)。在贝叶斯统计中,使用先验知识作为条件进行推断也很常见。先验知识可能来自领域知识、先前的一些测量结果。从大规模数据集中寻找物品间的隐含关系被称作关联分析(association analysis)或者关联规则学习(assocation rule learning)。 关联

2016-03-29 15:14:14 1256

原创 机器学习基础(三十一)—— 岭回归(Ridge Regression)到 LASSO

如果数据集的特征比样本点还多(XN×d,d>NX_{N\times d},d> N)怎么办?是否还可以使用线性回归来做预测?答案是否定的,因为在计算 (XTX)−1(X^TX)^{-1} 的时候会出错。为了解决这个问题,统计学家引入了岭回归(ridge regression)的概念。简单说来,岭回归就是在矩阵 XTXX^TX 上加一个 λI\lambda I 使得矩阵非奇异,进而能对 XX+λIX^

2016-03-29 13:00:13 9275

原创 机器学习基础(三十) —— 线性回归、正则化(regularized)线性回归、局部加权线性回归(LWLR)

线性回归根据最小二乘法直接给出权值向量的解析解(closed-form solution):w=(XTX)−1XTyw=(\mathbf X^T\mathbf X)^{-1}\mathbf X^Ty线性回归的一个问题就是有可能出现欠拟合现象,因为它求的是具有最小均方误差(LSE,Least Square Error)的无偏估计。显然,如果模型欠拟合将不能取得最好的预测结果,所以有些方法允许在估计

2016-03-29 12:47:56 3043

原创 机器学习的数学基础(一)—— 期望、方差、协方差与相关系数

0. 期望与方差期望: E[aX+bY]=aE[X]+bE[Y]E[aX+bY]=aE[X]+bE[Y]方差: D(aX+bY)=D(aX)+D(bY)+2cov(aX,bY)=a2D(X)+b2D(Y)+2abcov(X,Y)D(aX+bY)=D(aX)+D(bY)+2\text{cov}(aX,bY)\\=a^2D(X)+b^2D(Y)+2ab\:\text{cov}(X,Y)D(

2016-03-29 12:17:18 6782

原创 numpy 基础 —— np.linalg

顾名思义,linalg=linear+algebra,norm则表示范数,首先需要注意的是范数是对向量(或者矩阵)的度量,是一个标量(scalar):

2016-03-29 11:26:41 67525 4

原创 机器学习基础(二十九)—— 径向基核函数(RBF)

尽管最佳核函数的选择一般与问题自身有关,但对普遍问题还是有规律可循的,建议初学者在通常情况下,优先考虑径向基核函数(RBF): K(x,y)=exp(−γ∥x−y∥2)K(\mathbf x,\mathbf y)=\exp(-\gamma\|\mathbf x-\mathbf y\|^2)主要基于以下考虑:(1)作为一种对应于非线性映射的核函数,RBF 能够处理非线性可分的问题(2)线性核

2016-03-29 10:17:30 13432

原创 机器学习基础(二十八) —— 数据规格化

数据规格化(Scaling)又称数据尺度归一化,就是将特征的某个属性(特征向量的某一维)的取值范围映射到一个特定范围之内,以消除数值型属性因大小范围不一而影响基于距离的分类方法结果的公正性。可以毫不夸张地说,Scaling 在一个模式识别问题占据着举重轻重的地位,甚至关系到整个识别系统的成败。然而不幸的是,如此重要的一个环节却往往已被初学者忽视。当读者在同一个数据集上应用了相同的分类器却得到远不如他

2016-03-29 10:07:44 4655

原创 机器学习基础(二十七)—— 数据集的使用

ORL 人脸库(1)每幅人脸:112*92 = 10304 个像素(2)40*10,40人,每人10张

2016-03-29 09:42:20 3603

原创 机器学习基础(二十六)—— 将 SVM 推广到多类问题

有 3 种常用的策略可用于推广 SVM 解决多类问题,下面以一个 4 类问题为例进行说明。1. 一对多的最大响应策略(one against all)假设有 A、B、C、D 四类样本需要划分。在抽取训练集的时候,分别按照如下四种方式划分。(可见有多少类别,就对应多少中训练集的划分)(1)A 所对应的样本特征向量为正集(类标签为 +1),B、C、D 所对应的样本特征向量为负集(类标签为 -1);{

2016-03-29 09:31:32 2405

原创 C++ 设计模式 —— 访问者(Visitor)

访问者设计模式的实现借助于两个继承体系,(1)elements:一个是被操作的类(基类及其子类)(2)visitors:一个定义了一系列操作的访问者(基类及其子类)访问者模式是一种行为型设计模式(behavioral design pattern),被用于为一个树形结构(Node、LeafNode、InternalNode)中的 elements 增加操作。使用访问者设计模式,我们不需在 el

2016-03-28 21:46:56 4914 1

原创 C++ 设计模式 —— 策略模式(Strategy)

策略模式是一种行为型设计模式(behavioral pattern),用于将不同的算法(算法之间的关系是平行的,也即,它们可以解决相同的问题,只不过采取了不同的策略,比如用于聚类的 Kmeans,FCM之间)封装在不同的类中,也即策略模式用于组织解决同一问题不同算法,以方便客户端(也即是下文的 Context 类)灵活地调用。最终得到算法的替换、变化可以独立于客户端完成。其 UML 类图关系如下:

2016-03-28 20:48:52 5406

原创 [面试] C++ STL(一)—— 向一个vector中添加N个元素,平均的添加的性能是?

考虑如下的代码输出:int N = 100;vector<int> v;set<int> s;for (int i = 0; i < N; ++i){ s.insert(v.capacity()); v.push_back(i);}for (auto& e : s) cout << e << " ";cout << endl;可以看到空间的变化是0,1,2,4,

2016-03-28 09:38:13 5699

原创 [面试] C/C++ 语法(七)—— C++ 类型转换

static_cast:编译器认可的转型reinterpret_cast:用在编译器不认可的类型转换const_cast:消除常量性以上三种都属于静态转换,dynamic_cast:是安全的向下转型,需要运行时支持,是一种动态转型

2016-03-27 12:23:06 1014

原创 [面试] C/C++ 语法(六)—— RTTI(运行时类型信息)

RTTI(RunTime Type Information),顾名思义,对象运行时类型信息,以便在运行时进行类型识别。C++ 的对象识别可通过以下三个技术得以实现:(1)dynamic_cast 运算符(类型安全的向下转型)向下转型是不安全的,多态基类指针转换派生类指针时是类型安全的;(2)typeid 运算符(3)type_infoclass Shape{public: vir

2016-03-27 12:19:44 1935

原创 [面试] C/C++ 语法(五) —— extern

在 A.cpp 文件中引用 B.cpp 中的全局变量 B.cpp 中的全局变量是全局可见,但须使用 extern 显示声明。显然是不可以在 A.cpp 中对 B.cpp 进行直接包含的(#include "b.cpp"),解决方案是在 A.hpp 文件中使用 extern 关键字,A.hpp 头文件架起了 A.cpp 和 B.cpp 的桥梁。共如下的三个文件:(1)A.hpp(2)A.cp

2016-03-27 10:09:59 1113

原创 [面试] 算法(八)—— 树

(1)结点分类没有父节点的为根结点(root); 没有子节点的为叶结点(leafnode); 其余为内部结点;(2)二叉树的种类二叉搜索树左 <= 根 <= 右堆和红黑树堆分为大顶堆和小顶堆,有很多需要快速查找最大值和最小值的问题,都可用堆来解决。(堆是二叉树的一种)红黑树把树的结点定义为红、黑两种颜色,并通过规则确保从根节点到叶节点的最长路径的长度不超过最短路径的两倍。

2016-03-27 00:48:19 1077

原创 [面试] 算法(七)—— 逆序输出链表

递归的本质是栈,能用栈解决的问题都可转换为递归的程序结构。

2016-03-27 00:40:17 1201

原创 [面试] C/C++ 语法 —— 内存与操作系统

while(A && B)循环退出的条件只有两种:(1)A 不成立(2)A 成立 B 不成立while (A || B)循环退出的条件只有一个:(1) A B 均不成立

2016-03-27 00:04:20 1037

原创 [面试] 算法(六)—— 链表

链表是一种动态数据结构链表是一种动态数据结构,之所以称之为动态,是因为在创建链表时,无需知道链表的长度(这和数组形成鲜明的对比)。当插入一个结点时,我们只需为新结点分配内存,然后调整指针的指向来确保新节点被链接到链表当中。内存分配不是在创建链表时一次性完成的,而是每添加一个结点分配一次内存。由于没有闲置的内存,链表的空间效率比数组高。

2016-03-26 22:47:07 981

原创 [面试] 算法(五)—— 替换字符串中的空格

char str[100] = " hello world ";我写上述代码的含义是,我们是在已分配足够空间的字符串的基础上开始空格的替换的,也即不存在索引越界、再分配内存的问题。替换的顺序有二:(1)从左到右每发现一个空格,后面所有的元素退两格,也即从左到右无法一步实现将后面的单词出现在该出现的位置。(2)从右到左每发现一个空格,最后的一个单词退到合适的问题,可以一步实现最右的单词出现在该出现

2016-03-26 21:59:26 1062

原创 代码健壮性 —— 异常保护和合法性检测

参数: 入参; 是否为空返回值; 是否为空;根据返回状态码或返回值判断函数执行的状态;1. 参数的合法性检测(validate)指针是否为空if (p == NULL) ...内存申请:要判断是否申请成功;序列访问: 序列是否为空;是否越界;序列是否为空 ⇒ 删除序列中的元素 ⇒ 此时是否为空; 对于 Stack 的 pop 操作;对列表或者二维列表

2016-03-26 21:34:00 1398

原创 [面试] C/C++语法(三)—— 字符串

以’\0’结尾char str[10];strcpy(str, "0123456789"); // "0123456789":长度其实是11 // 所以,拷贝不会成功常量字符串为了节省内存,C/C++ 把常量字符串放到单独的一个内存区域。当几个指针赋给相同的常量字符串时,它们实际上会指向相同的内存地址;用常量内存初

2016-03-26 21:10:54 1315

Python-2.7.3.tgz

学习《Python 源码剖析》一书所用的 Python 源码文件。

2016-04-29

文件工具类

解决java 运行 MapReduce 相关代码时报权限错误的问题。

2016-03-15

上网日志数据(hadoop用)

简单格式的数据、

2016-03-10

matlab字幕拼接用视频截图

配套于《用matlab实现视频截图字幕部分的拼接》[http://blog.csdn.net/lanchunhui/article/details/50539019]

2016-01-18

空空如也

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

TA关注的人

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