- 博客(11)
- 收藏
- 关注
原创 决策树中的ID3, C4.5, CART算法及其优缺点
前一篇文章说了决策树算法的一些基本内容,包括它的分类和如何构造决策树。这篇文章我们继续深入如何构造决策树如何构造决策树建树需要解决以下三个问题:选择什么特征分裂如何选择特征分裂的属性值(具体判断条件)什么时候停止分裂以下是损失函数关键的公式熵:entropy(D)=−∑i=1nPilog2Pientropy(D) = -\sum_{i=1}^n P_ilog_2 P_ientr...
2019-03-05 04:37:40
11459
3
原创 决策树的概念,分类和初步的建树过程
决策树,顾名思义就是用树形结构来做决策。如何把我们想达到的算法表达成一棵树直接上例子,图源来自维基百科(titanic dataset):决策树其实就是一个根据条件从上往下的判断流程,根据条件的是或否,分支成下一层的判断与决策。如果分支不再是一个判断条件,那么它就是一个决策。从这个图我们可以看出feature(在这里面就是判断条件啦)的重要性,直接决定了你会走往哪个决策,性别,年龄,是否...
2019-03-04 09:28:39
1794
原创 使用快慢指针判断链表是否有环
今天做到leetcode 141: Linked List Cycle,判断链表是否存在环,因为看到题目中的val都是整数,所以我是将每个node用1.1作为值去mark了,如果head.next的val是1.1,就说明我指向的下个结点已经走过了,这就是一个环,如果走到最后head走到None了还没返回True,那么这个链表就是没有环的,return False。# Definition for...
2019-02-26 04:45:03
685
原创 摊还分析,核算法与势能法
为什么我们需要摊还分析上篇文章我们提到了算法的时间复杂度分析,给定输入规模,我们分析出算法的耗时,但是这样够了吗?有时输入规模不是一个静态的值,可能输入是一系列操作,比如在这棵树里先插入结点,再做一个查找,再删除最小值,再与另一棵树合并。(插入,查找,删除最小值,合并)就是一个输入的操作序列。为了对这类操作序列耗时进行分析,我们引入了摊还分析:n个操作的总耗时除以n。看到这儿你可能会想,这...
2018-12-19 00:54:21
3011
2
原创 时间复杂度的定义,记号以及几种计算方法
时间复杂度在关心些什么如果接触过算法,那么对于算法的时间复杂度分析一定不陌生,因为时间复杂度是算法优劣的一个重要评价标准。对于一个算法,我们不光关心它在某个规模输入的情况下耗时多少,我们更关心的是,当输入规模疯狂增长的时候,算法耗时增加多少,是按线性形式增加的?指数增加的?对数形式增加的?比如当你的算法接收的输入规模从k个数变到nk个数时,你的耗时是增加了n倍(线性速度增加)?还是增加了n2倍...
2018-12-17 12:46:40
8386
2
原创 二叉树的中序遍历,每层遍历,以及Z字形遍历
leetcode中,二叉树也是一块重点,对于树结构衍生出的问题,一般用递归的方法会比较多二叉树的中序遍历对于二叉树的前序遍历,就是左-根-右这种遍历顺序。有递归和非递归写法:非递归就用栈来实现 res, stack = [], [] while True: while root: stack.append...
2018-12-02 11:49:26
766
原创 2 sum, 3 sum, 4sum以及python collections.Counter
最近的文章都是有关面试最常出到的100题许多面试好像都喜欢问这三兄弟。2 sum给个列表,和target,返回列表中两个数加起来等于这个target的index举例:Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1].新建一个空字典,遍历一边列表,如果...
2018-12-01 07:27:14
882
原创 由Python谈及编程语言的分类
程序员之中有个永恒的争论话题,什么才是最好的编程语言?我觉得答案不是重点,而每个程序员使用的什么语言也没那么值得关注,重要的是每种语言的特点和精华,一种语言的面世和普及必然有它的道理,理解它存在的意义才是我们值得关注的。我自己用python比较多,我觉得它算是我的老友了,所以想先谈谈这位老朋友值得展开的特点和存在意义。python在编程语言中的分类1.谈及语言分类,我们先回想到:动态类型和静...
2018-11-30 00:02:31
7301
3
原创 leetcode top100 面试medium难度
链表类19.删除倒数第N个元素value-shifting, index and remove, 快慢指针 for _ in range(n): fast = fast.next生成器22.输入n,产生括号配对update问题,有点像unionfind49.找含一样字母的单词50.乘方计算 方法:迭代54.螺旋遍历输出一个矩阵...
2018-11-29 03:48:27
848
原创 浅谈内存泄漏,野指针,内存申请
拿到quiz好难过,内存泄漏一个Vector一个Array秀的我头疼。百度百科上的定义:内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。一看定义,坑好像更多了,动态分配,堆内存是什么?某种原因包含哪种原因?未释放我能理解,无法释放是什么时候看后果很严重,运行速度减慢!系统崩溃!...
2018-11-28 01:43:00
1322
原创 最大流问题与Ford-Fulkerson算法介绍
背景我们有图 G=(V, E),V是顶点的集合,E是边的集合。图中边的权重都为正数 (满足1,2两点有时称之为流网络)。对于这个图G,有两个顶点很重要,一个是源头s,一个是汇聚点t,我们想考虑的是从源头s流向汇聚点t的流。那么什么是流呢?流的定义定义:直观来说,流就像它的名字一样,从源头s运送一些“东西”到汇聚点t,比如下水道系统运输水流,公路网络运输车流。流具有三个需要注意的点...
2018-11-25 15:25:28
35548
29
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人