- 博客(10)
- 收藏
- 关注
原创 Shell Sort介绍及其Python实现
— 以下内容来自维基百科的介绍,本博客只作为一个摘要笔记。希尔排序,又称递减增量排序算法,是插入排序的高校改进版本,输入非稳定排序算法。希尔排序是针对插入排序的两点性质提出改进方法的:插入排序对于已经排序好的数据操作效率很高,几乎达到线性排序的效率;但是每次只能将数据移动一位,因此来说是低效的。希尔排序的时间复杂度和步长的选择有关,最坏情况下的时间复杂度为 o(nlog2n)o(n\...
2019-03-08 15:52:47
372
原创 Insert Sort的Python实现
插入排序的时间复杂度为O(n2)O(n^2)O(n2),in-place 排序方法,空间复杂度为常数,属于稳定排序,在数组长度较小时,排序效果很好。具体的python实现如下:def InsertSort(array): for i in range(1,len(array)): key = array[i] while i>0 and key<array[i-1]: ...
2019-03-08 15:14:46
219
原创 理解信息熵
1.直观理解题外话香农(信息论创始人)认为,比特是测量信息的单位,本质上,信息和长度、重量这些物理单位一样,是一种可以测量和规范的东西。对于通信系统而言,其传递的信息具有随机性,所以定量描述信息应基于随机事件。任何信息都存在冗余,冗余的大小与信息中每个符号(基本元素)的出现概率或者说不确定性有关。通常,一个信息源发送什么符号是不确定的,衡量它可以根据其出现的概率来度量。极限条件下,一个信源...
2019-02-25 14:23:03
601
原创 机器学习笔记:BP推导
BP推导首先进行网络变量和参数的定义,规定JJJ是损失函数,每层的激活值使用aaa表示,ggg是激活函数,al=g(zl),zl=Wlal−1+bla^{l}=g(z^{l}),z^{l}=W^{l}a^{l-1}+b^lal=g(zl),zl=Wlal−1+bl ,其中lll表示层索引,aila_i^lail中iii表示层内的神经元索引,∣l∣|l|∣l∣表示第lll层的神经元数目。推导的目...
2019-02-21 20:24:03
456
2
原创 机器学习笔记:模型评估与选择
— 本博客内容主要来自周志华著《机器学习》及网上相关资源,用于个人的学习记录,禁止转载。1.方差-偏差均衡机器学习的目标是学得的模型能够很好地应用于”新样本“,而不是仅仅在训练样本上工作的很好。学习得到的模型应用于新样本的能力,称为”泛化”(generalization)能力。尽管训练集通常只是样本空间的一个很小的采样,我们人希望它能够很好地反映整个样本空间的特性,否则就很难期望在训练集上学...
2019-02-15 22:23:00
328
原创 机器学习笔记:逻辑回归
— 本博客内容主要来自周志华著《机器学习》及网上相关资源,用于个人的学习记录,禁止转载。线性模型虽然简单,但是变化非常丰富,例如,我们如果认为样例所对应的输出是在指数尺度上变化的,那么就可以将输出标记的对数作为线性模型逼近的目标,lny=wTx+b\ln y = w^Tx+blny=wTx+b。这就是对数线性回归,实际上是利用ewT+be^{w^T+b}ewT+b逼近yyy,形式上虽然是线性回...
2019-02-15 16:00:36
197
原创 机器学习笔记:线性回归
— 本博客内容主要来自周志华著《机器学习》及网上相关资源,用于个人的学习记录,禁止转载。线性模型虽然简单,但是包含了机器学习基本思想,许多非线性模型可以在线性模型的基础上引入层级结构或高维映射得到。例如,神经网络中每个层都相当于一个线性模型+激励函数(非线性),构成非线性映射,而许多层叠加在一起,形成了功能强大的非线性神经网络。1.基本形式假设每个样本包含ddd个属性,表示为x=(x1,x2...
2019-02-15 11:55:52
247
1
原创 Heap Sort 的原理及Python实现
1.Heap表示方法满足以下性质的二叉树Binary Tree可以成为Binary Heap:Complete Tree:所有的层都是完全的,除了最后一层,且最后一层的叶子靠左。Min Heap or Max Heap:根节点是最大值或者最小值,而且这个性质对于任何递归得到的子树都成立。Binary Heap通常使用array表示:根节点在array[0];array[(i-1)...
2019-01-29 20:46:04
1675
原创 Merge Sort的Python实现
Merge Sort 是使用分治法的典型例子,将array分为两个子数组,子数组排序之后,再进行合并。显然,如果对于每个子数组进行复制,而不是就地排序,那么空间占用将达到O(nlg(n)),这是非常大的内存开销,所以这里通过索引的变化来定义子数组。这个问题的关键是索引的变化千万不能出错,推荐这种情况下统一使用左闭右开的数组表示法。优点如下: [left,right)直接分为[left,m...
2019-01-28 21:11:39
1945
原创 Quick Sort的两种实现方法---Python
1.思想: 取一个参考值,让序列所有的元素排序后,左侧子序列的值都比参考值小,右侧子序列的值都比参考值大。 分别对左侧和右侧的子序列做1中的递归操作。 基于上述思想,常用的实现方法有两种,一种是简单、容易理解的Lomuto scheme,另一种是效率更高的Hoare scheme。下面的代码参考自维基百科的伪代码实现,不清楚的可以移步维基,仔细研究。2.Lomuto par...
2019-01-28 20:40:32
947
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人