- 博客(87)
- 收藏
- 关注
原创 统计学习浅谈
如果一个系统能够通过执行某个过程改进它的性能,这就是学习。 ————赫尔伯特.西蒙人类的不断学习,经验占了很大的部分。通常我们遇到一件事需要判断,都是根据以往的经验,综合现在的情形,做出决策。而计算机呢?计算机没有自主学习的能力,它的经验就只能靠我们去提供。我们提供的就只能是能被计算机识别的一串串数字,那么计算机如何利用这些数字来形成经验呢?统计学习方法应运而生。计算机通过对数据进
2016-10-19 13:55:32
553
原创 整理一下HIVE概念
首先要明白,HIVE是HADOOP生态系统中充当数据仓库的角色。它本质上是是一个SQL解释器,就是使得我们能用SQL查询语言去查询HDFS上的数据。而这个功能,容易让我们误认为它就是传统的数据库。但事实上,它与传统的数据库是有区别的,下文会提到。HIVE的数据分为两个部分,一个是存数据的数据库,另一个是元数据库。下面分两部分单独说。存数据的数据库HIVE中存数据的数据库,会被存在
2016-10-18 14:08:38
843
原创 动态规划——寻找子矩阵最大和
最大和 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 给定一个由整数组成二维矩阵(r*c),现在需要找出它的一个子矩阵,使得这个子矩阵内的所有元素之和最大,并把这个子矩阵称为最大子矩阵。 例子: 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 -2 其最大子矩阵为: 9 2 -4 1
2016-10-14 22:07:03
3690
1
原创 MySQL一些操作备忘
MySQL连接cmd下可以用mysql -u root -p 登录root。也可以mysql -u -p xxxx 来直接登录某个数据库XXXX。 退出用exit 。创建数据库在cmd下可以 mysqladmin -u root -p CREATE XXXX 来创建一个名字叫XXXX的数据库。查看数据库mysql中可以用SHOW DATABASES 来查看所有的数据库,可以用USE XXX
2016-10-13 13:24:43
309
原创 动态规划——矩形嵌套问题
矩形嵌套 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度)。例如(1,5)可以嵌套在(6,2)内,但不能嵌套在(3,4)中。你的任务是选出尽可能多的矩形排成一行,使得除最后一个外,每一个矩形都
2016-10-11 10:06:48
2202
原创 动态规划——求最长下降/上升子序列
应该算是比较经典的一道题目了。无论是按字母顺序或者按数字顺序,解题的思路都应该是一样的。用动态规划,划分为子问题,就是每个元素当前位置之前的最长子序列加上它自身这个值,就是当前的最长子序列长度。总结一下,算法核心思想就是要找到当前位置元素之前的每个元素对应的最长下降/上升子序列的最大值,然后将它加一,就等于当前位置的子序列长度值了。其复杂度为$latex O(n^{2})$.详见下代码。
2016-10-10 22:19:29
1756
原创 线性可分支持向量机(二)
基本概念在线性可分支持向量机(一)中,我们研究的是最理想的情况,即被分类的两类样本点没有交叉,能够完全被分离超平面给分离。但实际上的情况一般都不是那么理想,可能找不出一个完美的分离超平面。有可能有样本点位于分离超平面的另一侧。此时,我们所追求的就是软间隔最大化。软间隔最大化根据博文一的分析,在寻找到支持向量并做出超平面后,对于正确分类的点,它必定满足 。现在存在一些不能满足函数间隔大于1的点,可以
2016-10-06 21:35:11
822
原创 动态规划经典——最长公共子序列
最长公共子序列 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列。 tip:最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(Longest Common Subsequence)。其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符
2016-10-04 11:23:15
1511
原创 使用虚拟机从小白开始搭建Spark集群
前言此篇博文记录一个小白如何用虚拟机搭建一个集群的血泪史,用来体验Spark的分布式计算。 在搭建之前,先理清一些概念。Spark有三种集群搭建方式。分别为 独立集群模式,即standalone模式搭建在Hadoop生态圈的YARN之上搭建在Mesos之上此篇讲述的是第2种。 而第2种集群方式,是建立在第1种之上的。也就是说,搭建了第2钟,就可以同时使用第1、2种了。YARN是什么?
2016-10-03 21:46:00
13088
2
原创 广度优先搜索——水杯倒水问题
三个水杯 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。 输入 第一行一个整数N(0 < N < 50)表示N组测试数据
2016-10-02 10:33:51
5937
原创 动态规划——某团题目 选红包
题目: 圆桌上放了一圈红包形成环形,每个红包金额不同,围绕圆桌走一圈选择若干红包,规则是不能拿相邻的红包,请问拿到红包最多的总金额是多少? 输入: 红包个数N N行数组表示N个红包 输出: 最多的总金额 样例输入: 2 1,2 1,3,4 样例输出: 2 4在另外一篇博客中, 我们用深度优先搜索暴力破解了这个题目,但并不是最优
2016-09-28 20:17:53
745
原创 线性可分支持向量机(一)
基本概念线性可分支持向量机是最基本的形式,对应于两类数据能够被完全分离的的情况。它学习的目标在于在特征空间中找到一个分离超平面,能够将实例分到不同的类别里。分离超平面对应于方程ωx+b=0。 在另外一篇博客里介绍了感知机概念,感知机也是寻找一个超平面,能够让实例正确分类。 两者不同之处就在于,感知机所要找的超平面有无数多个,而支持向量机是要找间隔最大的那个,它是唯一的。那么,什么是间隔最大?首先
2016-09-24 11:33:26
6746
2
原创 深搜-某团笔试 选红包问题
题目: 圆桌上放了一圈红包形成环形,每个红包金额不同,围绕圆桌走一圈选择若干红包,规则是不能拿相邻的红包,请问拿到红包最多的总金额是多少? 输入: 红包个数N N行数组表示N个红包 输出: 最多的总金额 样例输入: 2 1,2 1,3,4 样例输出: 2 4这道题有两个坎。要将输入的数据给找出来。解决办法是,把输入的全部当场字符
2016-09-23 13:38:56
559
原创 深搜-组合数
组合数 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 找出从自然数1、2、… 、n(0 < n < 10)中任取r(0 < r <= n)个数的所有组合。 输入 输入n、r。 输出 按特定顺序输出所有组合。 特定顺序:每一个组合中的值从大到小排列,组合之间按逆字典序排列。 样例输入 5 3 样例输
2016-09-21 21:28:10
1162
原创 深搜-寻找路径上最近城市
吝啬的国度 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来。现在,Tom在第S号城市,他有张该国地图,他想知道如果自己要去参观第T号城市,必须经过的前一个城市是几号城市(假设你不走重复的路)。 输入 第一行输入一个整数M表示测试数据共有M(1<=M<=5)
2016-09-21 21:18:51
491
原创 SPARK里的shuffle
定义shuffle中文一般称为 数据混洗。shuffle的官方定义是,它是spark的一种让数据重新分布以使得某些数据被放在同一分区里的一种机制。例子比如reduceByKey操作。 有时,同一个key的value并没有分布在同一个partition里,甚至没有分布在同一台机器里,而是存放在集群里的某一个其他地方。这时,Spark就会搜集所有的data,并把这些值集合在一起再进行reduce
2016-09-19 16:59:11
2125
原创 数据库系统操作备忘(三)
管理事务处理用来维护数据库的完整性,保证成批的SQL操作要么完全执行,要么完全不执行。(因为有可能数据添加了一半出故障,导致数据不完整而不知情)所谓事务,实际就是指一组SQL语句。可以添加占位符,使得回退时直接回退到某个占位符处。SAVEPOINT delete1;插入等操作后可以用@@ERROR变量(不同DBMS有不同变量),来查看操作是否成功,如果其为非0值,则表示有错误发生。BEGIN
2016-09-19 13:39:28
354
原创 朴素贝叶斯相关概念
朴素贝叶斯朴素贝叶斯是贝叶斯分类器里的一种方法。之所以称它朴素,原因就在于做出了特征条件全部独立的假设,但实际上,特征相互之间很大程度上都不是独立的,都有一些内在联系。但是,实践证明这因素也并未产生多大影响。 基于以上,可以总结, 1. 当样本特征数量比较多,且相关性比较大时,不适宜用朴素贝叶斯分类器,可以采用更好的如决策树等。 2. 当样本特征相关性不是那么强时,便可采用。数学模型首先来回忆
2016-09-18 21:26:53
796
原创 决策树与随机森林相关概念
决策树所谓的决策树, 就是一种树形结构。其内部每个节点代表一个特征的测试,每个一个分支代表测试的输出,而每个叶子节点则代表一种类别。 而随机森林,就是指的一群决策树所组成的一个森林。当一个新的样本需要归类,它的结果不是仅仅取决于某一刻决策树的结果,而是让森林里所有的决策树进行投票,选出结果最多的那类作为输出。 决策树形式如下: 构建决策树构建决策树的基本思想是以信息熵为度量,构造一棵熵值下
2016-09-18 21:01:04
1215
原创 K近邻相关概念及其Python实现
K近邻它是一种基本分类与回归的方法。在分类时,根据其K个最近邻的训练实例的类别,通过多数表决等方式进行预测。K近邻不具有显式的学习过程。模型K近邻法,实际上对应特征空间的划分。以最近邻法为例,子空间的划分,是相邻点之间做垂直平分线/面,然后相交集后,划分出的各个子空间。当实例点处在某一特征子空间中,那么它的类别就对应于特征子空间所对应的类别。 要找出最近的K个点,对于“最近”这个概念,首先就要定义
2016-09-15 12:29:07
654
原创 一直没搞清楚的堆与栈的总结
栈,是在内存中从高地址向低地址生长,并且是一块连续内存的区域。也就是说,在系统中,栈的栈顶地址,以及栈的大小,是事先就在编译器里设定好了的,这也就是为什么函数存在栈溢出的问题。堆,是从低地址开始生长,并且是在内存中不连续的内存区域。操作系统采用链表形式来存储空闲内存地址的,也就是说,我们malloc或者callloc出来的内存,就是堆。可见,堆更加灵活。主调函数调用新函数时,首先进栈的是主调函数
2016-09-13 22:06:40
667
原创 感知机相关概念及Python实现
感知机感知机目标在于对线性可分的数据集,能够求出将训练数据进行线性划分的分离超平面。从以上描述可以知道,分离超平面不止一个,也就是说,只要能找到其中一个分离超平面,模型就成功了。 而支持向量机,是在感知机的基础上,进一步要求寻找到划分超平面距离最近分类样点的距离之和达到最小,也就是不仅要经验风险最小,而且同时也要求结构风险最小化。模型输入空间是X∈Rn,输出空间是Y={+1,-1}映射函数
2016-09-13 15:57:26
634
原创 数据库系统操作备忘(二)
联结(join)表相同的数据在一张表内出现多次不是一件好事,此因素是关系型数据库设计的基础。关系表的设计就是要保证把信息分解成多个表。FROM···WHERE···可换为FROM···INNER JOIN···ON···联结多个表,考虑的仅仅是几张表是通过哪些键进行联结的,写出联结后,便可直接取所有表里想要的信息了。SELECT vend_name,prod_name,prod_priceF
2016-09-11 13:37:49
399
原创 Python中numpy模块的tile()方法简单说明
函数形式: tile(A,rep) 功能:重复A的各个维度 参数类型: - A: Array类的都可以 - rep:A沿着各个维度重复的次数举例:tile([1,2],2)输出[1,2,1,2]tile([1,2],(2,2))重复顺序为: [1,2] => [[1,2] , [1,2]] => [[1,2,1,2] , [1,2,1,2]]tile([1,2],(2,2,3))重复顺序
2016-09-06 20:23:19
14388
1
转载 SPARK中的基本概念
基本概念以下内容主要参考自《大数据Spark企业实战》一书(作者:王家林)Application:用户编写的Spark程序,包含Driver和Executor代码。Driver:运行main函数并且创建和关闭SparkContext的程序。Executor:运行在Worker节点上的一个进程,该进程负责运行某些Task,并且负责将数据存放在内存或磁盘中。在Spark On Yarn模式下,其进
2016-09-05 12:48:46
985
原创 数据结构一些知识点备忘
波兰表达式?逆波兰表达式? 波兰表达式即常见中缀表达式。2+3*/(5-1)逆波兰表达式即后缀表达式。操作数在前, 操作符在后。2351-*+ 。 运算方法为遇操作数压栈,遇运算符两次出栈进行运算,并将结果压栈,一直重复以上的过程。
2016-09-02 21:47:57
290
原创 题目1——数房子
当时做题时,有思路,就是码不出代码来,平时练习少了,呵呵。 今天突然想起了这道题,然后就边查资料边做,最后还是学习到了不少。 下面进入正题,首先我们来看看题目: 题目什么意思呢?如下图, 红色方框里的1都是要么左右、要么上下挨着的,而红色圆圈里的1之间却是隔着0的,所以方框里的1表示的同一栋房屋,圆圈里的1分别表示了一栋房屋。如何判断他们是同一栋房屋呢?我们可以这样思考。 遍历整个表,当我们找
2016-09-02 13:32:20
681
原创 join操作避免数据混洗的partitionBy()方法
我们经常需要把两张表进行join操作。 在join时,我们对数据集是如何分区的一无所知。 默认情况下,会把两个数据集中所有键的哈希值都求出来,将该哈希值相同的记录通过网络传到同一台机器上,然后在那台机器上对所有键相同的记录进行连接。 当出现特殊情况时,比如两张表里某张表非常大,并且这张表里的数据又没有变化过。那么每一次join都会去求所有哈希值,浪费了不少时间,每一次求出的哈希值都是一样的。如
2016-08-31 20:05:25
1938
原创 SPARK里的reduce(),fold(),以及aggregate()
以上三个方法操作都是对RDD进行的聚合操作。reduce()与fold()方法是对同种元素类型数据的RDD进行操作,即必须同构。其返回值返回一个同样类型的新元素。num=sc.parallelize([1,2,3,4])sum=num.reduce(lambda x,y: x+y)fold()与reduce()类似,接收与reduce接收的函数签名相同的函数,另外再加上一个初始值作为第一次调用
2016-08-29 16:27:40
11401
原创 数据库系统操作备忘(一)
选择需要的列SELECT prod_name FROM products;SELECT prod_id,prod_name,prod_price FROM products;按顺序排列 SELECT prod_id,prod_name,prod_priceFROM productsORDER BY prod_name,prod_price以上,默认升序,先按名字排列,相同的再按价格排列
2016-08-29 13:53:59
569
原创 SPARK基础操作备忘
首先得cd到SPARK目录下,方便操作文件。读取数据创建RDD:lines=sc.textFlie("README.md")pythonLines=lines.filter(lambda line: "Python" in line)经过以上操作,在pythonLines这个对象就包含了在README.md这个文件里所有包含有“Python”这个字符的行。 这里要注意的是,RDD存在两种操作
2016-08-27 15:19:12
564
原创 决策树与随机森林相关概念及其Python实现
决策树所谓的决策树, 就是一种树形结构。其内部每个节点代表一个特征的测试,每个一个分支代表测试的输出,而每个叶子节点则代表一种类别。 而随机森林,就是指的一群决策树所组成的一个森林。当一个新的样本需要归类,它的结果不是仅仅取决于某一刻决策树的结果,而是让森林里所有的决策树进行投票,选出结果最多的那类作为输出。 决策树形式如下: 构建决策树构建决策树的基本思想是以信息熵为度量,构造一棵熵值下
2016-07-20 11:24:23
2559
原创 深度优先搜索+动态规划——01背包类似问题
描述 今天是阴历七月初五,acm队员zb的生日。zb正在和C小加、never在武汉集训。他想给这两位兄弟买点什么庆祝生日,经过调查,zb发现C小加和never都很喜欢吃西瓜,而且一吃就是一堆的那种,zb立刻下定决心买了一堆西瓜。当他准备把西瓜送给C小加和never的时候,遇到了一个难题,never和C小加不在一块住,只能把西瓜分成两堆给他们,为了对每个人都公平,他想让两堆的重量之差最小。每个西
2016-07-19 16:41:05
2459
原创 初学ML笔记N0.6——聚类方法
聚类的定义聚类就是按数据的相似性,将其划分为多个类别,从而使内别内的相似度大,内别间的相似度小。它是一种无监督学习方式,即不需要先给定样本进行学习。相似度的度量方式聚类的目的就是为了将相似样本的样本分到同一个类别里。那么,首先要考虑的便是如何度量这个相似。下面给出几种常见的度量方式: 闵可夫斯基距离里,当p=2时,便是我们熟知的欧氏距离,可见,它的适用范围属于能在坐标轴里描绘的点的样本集。
2016-07-14 22:05:35
1644
原创 初学ML笔记NO.5——关于熵
注:这篇笔记仅仅记录关于熵的一些知识点备忘。对于最大熵模型的使用,有待做进一步了解。熵的定义一个随机变量X,其取值为{x1,x2,x3…xk},则我们定义其信息量为: 将p(x=xi)写为通式,则得到熵的数学定义: 熵是随机变量不确定性的度量,不确定性越大,熵越大;当随机变量退化为定值(即概率为1),熵就变为0了。注:均匀分布是“最不确定”的分布,因为我们没有任何信息时,一般都会把所有情况作为等可
2016-07-14 19:27:25
682
转载 基于贪心算法的几类区间覆盖问题
(1)区间完全覆盖问题问题描述:给定一个长度为m的区间,再给出n条线段的起点和终点(注意这里是闭区间),求最少使用多少条线段可以将整个区间完全覆盖样例:区间长度8,可选的覆盖线段[2,6],[1,4],[3,6],[3,7],[6,8],[2,4],[3,5]解题过程:1将每一个区间按照左端点递增顺序排列,拍完序后为[1,4],[2,4]
2016-07-13 11:07:38
492
原创 贪心算法——另一种找最大值情况
寻找最大数(三) 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 给出一个整数N,每次可以移动2个相邻数位上的数字,最多移动K次,得到一个新的整数。 求这个新的整数的最大值是多少。 输入 多组测试数据。 每组测试数据占一行,每行有两个数N和K (1 ≤ N≤ 10^18; 0 ≤ K ≤ 100). 输出 每组
2016-07-11 16:00:59
1830
原创 贪心算法——区间找点问题
找点 时间限制:2000 ms | 内存限制:65535 KB 难度:2 描述 上数学课时,老师给了LYH一些闭区间,让他取尽量少的点,使得每个闭区间内至少有一个点。但是这几天LYH太忙了,你们帮帮他吗? 输入 多组测试数据。 每组数据先输入一个N,表示有N个闭区间(N≤100)。 接下来N行,每行输入两个数a,b(0≤a≤b≤100),表示区间的
2016-07-11 15:52:13
1189
原创 初学ML笔记N0.4——梯度下降的优化
关于优化,有两个方向可以考虑。第一个方向是关于学习率的优化。在迭代过程中,学习率一直是保持不变的。那么,能否在迭代过程中不断修正学习率,加快收敛速度呢?第二个方向是关于收敛方向。一般来说我们是直接选择负梯度方向进行收敛,(考虑一维变量的简单情形,也就是用一阶导做了一个线性方向的下降)。如果我们不选择负梯度方向,而选择与其有一定夹角的方向,收敛速度又会怎么变呢?优化学习率梯度下降公式: 在以上公
2016-07-11 14:47:54
915
原创 初学ML笔记N0.3——凸优化、拉格朗日对偶
凸函数定义凸优化,即指的是对凸函数的一类优化问题。所以,首先,应该明白什么是凸函数。 在同济教材里,判断某个点处的凹凸性,用的是二阶导数的正负号来判断。小于0,是凸的;大于0,是凹的。但是,国外的凹凸性定义跟我们是相反的,这点得注意。以下讨论,我们按国外的定义来。 按数学定义,凸函数定义为: 图里的表示方式有点特别。但是我们把 θx+(1-θ)y 化简为 θ(x-y)+ y 后,把 (x-y)
2016-07-09 21:36:44
4113
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅