提出混合模型主要是为了能更好地近似一些较复杂的样本分布,通过不断添加component个数,能够随意地逼近不论什么连续的概率分布.所以我们觉得不论什么样本分布都能够用混合模型来建模.由于高斯函数具有一些非常有用的性质.所以高斯混合模型被广泛地使用. GMM与kmeans相似,也是属于clustering,不同的是.kmeans是把每一个样本点聚到当中一个cluster,而GMM是给出这些样本点到每一个cluster的概率.每一个component就是一个聚类中心. GMM(Gaussian Mi…
Sarsa算法 是 TD算法的一种,之前没有严谨推导过 TD 算法,这一篇就来从数学的角度推导一下 Sarsa 算法.注意,这部分属于 TD算法的延申. 7. Sarsa算法 7.1 推导 TD target 推导:Derive. 这一部分就是Sarsa 最重要的内核. 折扣回报:$U_t=R_t+\gamma R_{t+1}+\gamma^2 R_{t+2}+\gamma^3 R_{t+3}+\cdots \ \quad={R_t} + \gamma \cdot U_{t+1} $ 即 将\(…
前言 之前的学习中也有好几次尝试过学习该算法,但是都无功而返,不仅仅是因为该算法各大博主.大牛的描述都比较晦涩难懂,同时我自己学习过程中也心浮气躁,不能专心. 现如今决定一口气肝到底,这样我明天就可以正式开始攻克阿里云天池大赛赛题,所以今天一天必须把Adaboost算法拿下!!! Adaboost boosting与bagging boosting 个体学习器间存在强依赖关系.必须串行生成的序列化方法,提高那些在前一轮被弱分类器分错的样本的权值,减小那些在前一轮被弱分类器分对的样本的权值, 使误…
spfa的定义 PFA算法的全称是:Shortest Path Faster Algorithm,用于求单源最短路,由西南交通大学段凡丁于1994年发表.当给定的图存在负边时,Dijkstra算法就无能为力了,然而bellman_ford算法的复杂度又太高.在这种情况下spfa算法就有了用武之地. spfa实现 为了简单起见,我们首先约定有向图G中不存在负权回路(如果有就不会存在最短路了),在执行spfa时如果一个节点入队次数超过 n 次(n为节点总数),那么图中就存在负环.我们用数组 dis[…
转载请标明出处:https://www.cnblogs.com/tiaozistudy/p/dbscan_algorithm.html DBSCAN(Density-Based Spatial Clustering of Applications with Noise)聚类算法,是一种基于高密度连通区域的.基于密度的聚类算法,能够将具有足够高密度的区域划分为簇(Cluster),并在具有噪声的数据中发现任意形状的簇.DBSCAN算法通过距离定义出一个密度函数,计算出每个样本附近的密度,从而根据每…
前言 今天不容易有一天的自由学习时间,当然要用来"学习".在此记录一下今天学到的最基础的平衡树. 定义 平衡树是二叉搜索树和堆合并构成的数据结构,它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树. 这里仅仅说明一下平衡树中的\(Splay\)算法 进入正题 平衡树中有许多种类:红黑树.\(AVL\)树,伸展树,\(Treap\)等等,但是\(Splay\)算法算是可用性很强的一种了.也就是说比较稳定. 在\(Splay\)算法中,一个处处都要…
「Meissel-Lehmer 算法」是一种能在亚线性时间复杂度内求出 \(1\sim n\) 内质数个数的一种算法. 在看素数相关论文时发现了这个算法,论文链接:Here. 算法的细节来自 OI wiki,转载仅作为学习使用. 目前先 mark 一下这个算法,等有空的时候再来研究一下,算法的时间复杂度为 \(\mathcal{O}(n^{\frac23})\) ,所以 \(n\) 的范围可以扩大至 \(10^{12}\) 的级别: 代码实现 #include <bits/stdc++.h>…
博主最近进度停滞了 对web开发理解欠缺好多内容 今天整理下MD5算法,这个涉及到mysql数据库存储用户表密码字段的时候 一般是带有加密的 # -*- coding: utf-8 -*- import md5 password = " new_password = md5.new() new_password.update(password) print new_password.hexdigest() # 得到32位的加密字符串…
k-近邻算法采用测量不同特征值之间的距离来进行分类. 优点:精度高.对异常值不敏感.无数据输入假定 缺点:计算复杂度高.空间复杂度高 使用数据范围:数值型和标称型 用例子来理解k-近邻算法 电影可以按照题材分类,每个题材又是如何定义的呢?那么假如两种类型的电影,动作片和爱情片.动作片有哪些公共的特征?那么爱情片又存在哪些明显的差别呢?我们发现动作片中打斗镜头的次数较多,而爱情片中接吻镜头相对更多.当然动作片中也有一些接吻镜头,爱情片中也会有一些打斗镜头.所以不能单纯通过是否存在打斗镜头或者接吻镜…
转自http://www.hankcs.com/security/des-algorithm-illustrated.html 译自J. Orlin Grabbe的名作<DES Algorithm Illustrated>,国外许多大学将该文章作为补充材料,可作为理解DES算法的最佳入门手册.反观许多教材介绍DES时直接照搬一张流程图,图中IP等缩写符号不加解释,让人误解:许多博客则直接给出蹩脚的源码,对内部流程缺乏解读.事实上,DES在算法上并不复杂,只是流程繁多而已.此时利用一个简单的例子…
K近邻算法(KNN)是指一个样本如果在特征空间中的K个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性.即每个样本都可以用它最接近的k个邻居来代表.KNN算法适合分类,也适合回归.KNN算法广泛应用在推荐系统.语义搜索.异常检测. KNN算法分类原理图: 图中绿色的圆点是归属在红色三角还是蓝色方块一类?如果K=5(离绿色圆点最近的5个邻居,虚线圈内),则有3个蓝色方块是绿色圆点的“最近邻居”,比例为3/5,因此绿色圆点应当划归到蓝色方块一类:如果K=3(离…
本文部分图片来源 代码来源(代码是学姐哒.. 一.引入 Manacher算法是用来求最长回文子串的算法,时间复杂度O(n). 回文子串指的是''aacaa'',''noon'',这种正着反着读都一样的. 二.构造字符串 朴素的求法是O(n^2),以某个字符为中心,向左右扩展,如下图所示. 对于长度为奇数的字符串是可以枚举回文串的中心的,那么偶数的呢? 我们在字符的空里插入其他不在字符串中出现过的字符,如’#‘. 如字符串acca,变为$a#c#c#a#,为了避免出现错误,我们不让首字符等于尾字符…
STL提供了好几种算法对区间内的元素排序.出来完全排序外,还支持局部排序. 对所有元素排序 void sort(RandomAccessIterator beg,RandomAccessIterator end) void sort(RandomAccessIterator beg,RandomAccessIteratro end, BinaryPredicate op) void stable_sort(RandomAccessIterator beg,RandomAccessIterator…
本节描述的算法会变动区间内的元素内容.有两种方法可以变动元素内容: 1.运用迭代器遍历序列的过程中,直接加以变动 2.将元素从源区间赋值到目标区间的过程中加以变动 复制(copy)元素 OutputIterator copy(InputIterator sourceBeg, InputIterator sourceEnd, OutputIterator destBeg) BiderectionalIterator copy_backward(BidirectionalIterator sourc…
1 .假定已知数据的各个属性值,以及其类型,例如: 电影名称 打斗镜头 接吻镜头 电影类别 m1 3 104 爱情片 m2 2 100 爱情片 m3 1 81 爱情片 m4 2 90 爱情片 w1 101 10 动作片 w2 99 5 动作片 w3 98 2 动作片 上述数据称为训练数据. 如果有新的电影, k1 , 18 , 90 ,未知 电影名称 与未知电影的距离 m1 20.5 m2 18.7 m3 19.2 m4 21 w1 115.3 w2 117.4 w5 118.9 距离 : 通过…
前言 其实也没什么好说的吧,三分法就是用来求一个单调函数的最值和满足最大值的\(x\),秦九韶算法就是在\(O(N)\)时间内求一个多项式值 怎么用 三分法使用--看这篇:https://www.cnblogs.com/Rye-Catcher/p/9255304.html 函数定义域和值域都为实数呢? 不多说,先看这道题:https://www.luogu.org/problemnew/show/P3382 三分法的代码相似,大家应该都知道.哪怎么快速求一个多项式函数的值呢? 秦九韶算法:计算\…
1. 背景介绍 CART(Classification and Regression Trees,分类回归树)算法是一种树构建算法,既可以用于分类,也可以用于回归.它的工作原理是:使用二元切分来处理连续型变量. 2. 使用Python构建CART树 2.1 读取数据 #读取文件数据,tab键为分隔符,将每行内容映射成一组浮点数: def loadDataSet(fileName): dataMat = [] fr = open(fileName) #依次读取每一行: for line in fr…
Kosaraju算法一看这个名字很奇怪就可以猜到它也是一个根据人名起的算法,它的发明人是S. Rao Kosaraju,这是一个在图论当中非常著名的算法,可以用来拆分有向图当中的强连通分量. 背景知识 这里有两个关键词,一个是有向图,另外一个是强连通分量.有向图是它的使用范围,我们只能使用在有向图当中.对于无向图其实也存在强连通分量这个概念,但由于无向图的连通性非常强,只需要用一个集合维护就可以知道连通的情况,所以也没有必要引入一些算法. 有向图我们都了解,那么什么叫做强连通分量呢?强连通分量的…
在上一篇文章当中我们分享了强连通分量分解的一个经典算法Kosaraju算法,它的核心原理是通过将图翻转,以及两次递归来实现.今天介绍的算法名叫Tarjan,同样是一个很奇怪的名字,奇怪就对了,这也是以人名命名的.和Kosaraju算法比起来,它除了名字更好记之外,另外一个优点是它只需要一次递归,虽然算法的复杂度是一样的,但是常数要小一些.它的知名度也更高,在竞赛当中经常出现. 先给大家提个醒,相比于Kosaraju算法,Tarjan算法更难理解一些.所以如果你看完本文没有搞明白的话,建议可以阅读…
参考高性能javascript for in 循环  使用它可以遍历对象的属性名,但是每次的操作都会搜索实例或者原型的属性 导致使用for in 进行遍历会产生更多的开销 书中提到不要使用for in 遍历数组 1 首先for in 会查找原型链上的属性 var arr = [1,2,3]; Array.prototype.a = "test"; for(var i in arr) { console.log(i); console.log(typeof i); }//在这里例子中会发…
快速排序 快排的详细介绍见,简单的说就是取输入序列中的首元素m,然后将除首元素m以外的其它元素分成两组,小于等于m的一组和大于m的一组.将3组元素组合成输入队列:小于等于m + m + 大于m. 下面看一个用haskell实现的快速排序代码: quicksort :: (Ord a) => [a] -> [a] quicksort [] = [] quicksort (x:xs) = let smallerSorted = quicksort [a | a <- xs, a <=…
简易地图 如图所示简易地图, 其中绿色方块的是起点 (用 A 表示), 中间蓝色的是障碍物, 红色的方块 (用 B 表示) 是目的地. 为了可以用一个二维数组来表示地图, 我们将地图划分成一个个的小方块. 二维数组在游戏中的应用是很多的, 比如贪吃蛇和俄罗斯方块基本原理就是移动方块而已. 而大型游戏的地图, 则是将各种"地貌"铺在这样的小方块上. 寻路步骤 1. 从起点A开始, 把它作为待处理的方格存入一个"开启列表", 开启列表就是一个等待检查方格的列表. 2.…
1.字典中一个键映射多个值 可以使用collections中的defaultdict来实现,defalultdict接受list或者set为参数 from collections import defaultdict d = defaultdict(list) d['a'].append(1) d['a'].append(2) d['b'].append(4) >>> ddefaultdict(<type 'list'>, {'a': [1, 2], b: [4]}) 2.字…
1.解压序列赋值给多个变量 任何的序列(或者是可迭代对象)可以通过一个简单的赋值语句解压并赋值给多个变量. 唯一的前提就是变量的数量必须跟序列元素的数量是一样的. >>> data = [ 'ACME', 50, 91.1, (2012, 12, 21) ]>>> name, shares, price, date = data >>> name, shares, price, (year, mon, day) = data >>>…
平台:Ubuntu 12.04/gcc 4.6.7 插入排序 #include<vector> #include <algorithm> #include<iostream> using namespace std; template <typename T> void insertSort(vector<T>& vec){ //vector<T>::iterator ite; ;j<vec.size();j++) {…
using System; namespace Demo { class Studycs { public static void Main(String[] args) { // String result = Revert("abcdef"); , , , , }; // int result = searchTree(numbers, 7); int[] result=sortSelect(numbers); foreach(int item in result) { Conso…
1. Meterpreter命令详解 1.1基本命令 使用Adobe阅读器渗透攻击实战案例打开的Meterpreter会话实验,靶机是WinXP.由于所有命令与书中显示一致,截图将书中命令记录下来. 1.2文件系统命令 1.3网络命令 1.4系统命令 2.后渗透攻击模块 2.1persistence后渗透攻击模块 示例代码如下 meterpreter > run persistence -X -i 5 -p 443 -r 10.10.10.128 [!] Meterpreter scripts…
冒泡排序 比较任何两个相邻的项,如果第一个比第二个大,则交换它们 重复这样的操作,直到排序完成,具体代码如下: let arr = [67,23,11,89,45,76,56,99] function bubbleSort ( data ) { var temp = 0; for ( var i = data.length ; i > 0 ; i -- ){ for( var j = 0 ; j < i - 1 ; j++){ if( data[j] > data[j + 1] ){ t…
一些新理解 之前我有个疑惑,RNN的网络窗口,换句话说不也算是一个卷积核嘛?那所有的网络模型其实不都是一个东西吗?今天又听了一遍RNN,发现自己大错特错,还是没有学明白阿.因为RNN的窗口所包含的那一系列带有时间序列的数据,他们再窗口内是相互影响的,这也正是RNN的核心,而不是像卷积那样直接选个最大值,RNN会引入新的参数以保证每个时刻的值都能参与进去,影响最终结果.而且这里的窗口大小,实质上是指你循环网络的层数 构造RNN 方式一:做自己的RNN cell,自己写处理序列的循环 方式二:直接使…