算法

《统计学习方法学习》算法学习笔记(一)之感知机

丶灬走出姿态 提交于 2019-12-30 09:44:53
感知机 总述 感知机是 二类分类 的 线性分类模型 ,其 输入 为实例的 特征向量 , 输出 为 实例的类别 ,取+1和-1二值。感知机对应于输入空间(特征空间)中将实例划分为正负两类的 分离超平面 ,属于 判别模型 。感知机学习旨在求出将训练数据进行线性化分的分离超平面,为此,导入基于 误分类的损失函数 ,利用 梯度下降法 对损失函数极小化,求得感知机模型。感知机学习算法具有简单而易于实现的优点,分为原始形式和对偶形式。感知机预测是用学到的感知机模型对新的输入实例进行分类。 1.1 感知机模型 定义 :假设输入空间(特征空间) x x x 是 R n \R^n R n ,输出空间是 y y y ={-1, +1},输入 x x x 表示实例的特征向量,对应于输入空间(特征空间)中的点,输出 y y y 表示实例的类别。由输入空间到输出空间的如下函数 f ( x ) = s i g n ( w ∗ x + b ) f(x)=sign(w*x+b) f ( x ) = s i g n ( w ∗ x + b ) 称为感知机 。其中, w w w 和 b b b 称为感知机模型参数, w ∈ R n w∈R^n w ∈ R n 叫权值或权值向量, b ∈ R b∈R b ∈ R 叫作偏置, w ∗ x w*x w ∗ x 表示 w w w 和 b b b 的内积, s i g n

如何自学图像编程

社会主义新天地 提交于 2019-12-30 04:53:21
现在,图像类信息越来越多了,对图像的编程需求也越来越多。图像类项目的特点是性价比高,单行代码的价格一般是普通的程序的10倍,每行代码能够卖几块钱。很多人把目光放在这个上面。刚才又有网友咨询,做图像要看些什么书?结合我的自学经验,写一篇博客谈谈这个问题。 需要先明确几个问题: (1)你的基础如何?做图形图像的话,对数学要求比较高,至少要有大学数学的基础——微积分、线性代数、概率统计和数值分析都会用到的。不然,书看不下去,没法自学。如果要做深入的话,对英语也有一定的要求,绝大部分深入的资料都是英文的。 (2)做哪个层面的?与硬件严重相关的只能选C,做应用层的话可以选C++和C#,我个人推荐C#,当然,智能手机还是推荐C++。做Web层面的话,目前最佳选择是Flash(其实Silverlight比Flash更适合做Web图像,好歹Silverlight有byte类型,有struct,但Silverlight的普及度不够),Html5/Canvas目前只能做简单的应用,复杂的还不行。如果只是做算法,matlab就够了,但一般不是科班出生,很少做纯算法的。做纯算法还有个缺点就是,算法转换为收入很难。鉴于C#写算法并不比用matlab写算法慢,不建议摸matlab。但matlab代码要能看懂,因为论文中很多算法是用matlab写的。 (3)有没有克服困难的勇气。图像类项目大多不大

数字信号处理专题(3)——FFT运算初探

筅森魡賤 提交于 2019-12-30 01:23:43
一、前言   FFT运算是目前最常用的信号频谱分析算法。在本科学习数字信号处理这门课时一直在想:学这些东西有啥用?公式推来推去的,有实用价值么?到了研究生后期才知道,广义上的数字信号处理无处不在:手机等各种通信设备和WIFI的物理层信号处理、摄像头内的ISP、音频信号的去噪等。各种算法中,FFT是查看信号本质,也就是频谱的重要手段。之前仅直接调用FFT/IFFT IP核,今天深入探讨下算法本身和实现方案。 二、FFT运算原理及结构   本文仅对FFT的核心思想、作用和算法结构进行介绍,FFT具体原理和公式推导详见参考文献。FFT是DFT的快速算法,旨在降低计算复杂度以减小处理延迟和占用的软硬件资源,核心思想是将大点数的DFT运算拆分成多个小点数的DFT运算。因此FFT核心公式与DFT相同。    DFT运算把原始信号采样点与不同的旋转因子做乘累加运算,而旋转因子经过欧拉公式展开后就是角度成倍数关系的正余弦函数。现在DFT在干什么以及怎么干的一目了然:把一段原始信号采样点与不同频率的正余弦信号做“相关运算”,从而找出信号的频率分量。通俗点说就是 通过查看信号与不同频率值正余弦信号的相似程度分析信号本身的频率成分 。工程应用时,了解到这一点就足够了。   有了上述理解,再来看FFT算法

博客作业06--图

纵然是瞬间 提交于 2019-12-30 00:56:32
1.学习总结 1.1图的思维导图 1.2 图结构学习体会 深度优先遍历与广度优先遍历 不同点:广度优先搜索,适用于所有情况下的搜索,但是深度优先搜索不一定能适用于所有情况下的搜索。因为由于一个有解的问题树可能含有无穷分枝,深度优先搜索如果误入无穷分枝(即深度无限),则不可能找到目标节点。所以,深度优先搜索策略是不完备的 广度优先搜索适用范围:在未知树深度情况下,用这种算法很保险和安全。在树体系相对小不庞大的时候,广度优先也会更好些。 深度优先搜索适用范围:刚才说了深度优先搜索又自己的缺陷,但是并不代表深度优先搜索没有自己的价值。在树深度已知情况下,并且树体系相当庞大时,深度优先搜索往往会比广度优先搜索优秀,因为比如8*8的马踏棋盘中,如果用广度搜索,必须要记录所有节点的信息,这个存储量一般电脑是达不到的。然而如果用深度优先搜索的时候却能在一个棋盘被判定出来后释放之前的节点内存。 Prim和Kruscal算法 Prim算法的实现过程:首先以一个结点作为最小生成树的初始结点,然后以迭代的方式找出最小生成树中各结点权重最小的边,并加到最小生成树中。(加入之后如果产生回路了就要跳过这条边,选择下一个结点。)当所有的结点都加入到最小生成树中后,就找出了这个连通图的最小生成树。 Kruskal算法的实现过程:Kruskal算法在找最小生成树结点之前,需要对权重从小到大进行排序

算法分析与优化

无人久伴 提交于 2019-12-29 21:32:29
算法分析 同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率.算法分析的目的在于选择合适算法和改进算法.一个算法的评价主要从时间复杂度和空间复杂度来考虑. 1、时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度,记为T(n)。 (2)时间复杂度 在刚才提到的时间频度中,n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化。但有时想知道它变化时呈现什么规律.为此,引入时间复杂度概念. 一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。 在各种不同算法中,若算法中语句执行次数为一个常数,则时间复杂度为O(1),另外,在时间频度不相同时,时间复杂度有可能相同,如T(n)=n2+3n+4与T(n)=4n2+2n

数据结构与算法(一):概论

穿精又带淫゛_ 提交于 2019-12-29 21:26:54
一、什么是数据结构?什么是算法?   1.数据结构指的是“一组数据的存储结构”,算法指的是“操作数据的一组方法”。   2.数据结构是为算法服务的,算法是要作用再特定的数据结构上的。 二、学习的重点    1.效率和资源消耗的度量衡--复杂度分析   2.搞定复杂度分析后,后面就是数据结构与算法的正文内容了,如下所示: 作为初学者和非算法工程师,只需要掌握最常用、最基础的20个数据结构与算法,学习他们的:“来历”、“特点”、“适合解决什么问题”和“实际的应用场景”,分别是一下10个数据结构和10个算法: 数据结构:数组、链表、栈、队列、散列表、二叉树‘、堆、跳表、图、Tire树; 算法: 递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。 三、如何学习    1.熟悉理论知识   2.练习(https://leetcode-cn.com/problemset/algorithms/) 来源: https://www.cnblogs.com/573583868wuy/p/9801516.html

数据结构与算法概论

﹥>﹥吖頭↗ 提交于 2019-12-29 21:26:25
计算机已经成为我们有力的工具。利用计算机处理数据,我们需要考虑到数据的存储表示,以及对数据的处理。 而数据的表示则要用到我们所说的数据结构,对数据的处理需要用到算法。 1 . 数据结构 对数据的存储表示,我们不仅仅需要保存每个独立数据的值,还需要保存数据中数据元素间的关系。 数据 首先我们来看一下我们的主要对象: 数据 数据指的是所有能够输入到计算机并能够被计算机程序识别和处理的 集合 (1)数据的分类:数值型(整数、实数等)+ 非数值型(图像、语音、文本等) (2)数据的组成:数据元素(由数据项构成)一般数据元素是我们考虑数据时的最小单位 数据元素间的关系 数据中数据元素间的逻辑关系我们可以用数据的逻辑结构来表示。这个是针对数据的 逻辑结构 (1)集合:数据元素间都是平等的,比如接幼儿园小孩子回家在门口等候的父母亲 (2)线性结构:数据间一对一的关系,比如列队 (3)树结构:一对多的层次关系。公司部门里面的领导员工 (4)图结构:数据元素间多对多的任意关系。辩论自由辩时的状态 存储结构(物理结构) 数据的存储表示,我们需要考虑到在计算机中用什么结构去存,这个是针对计算机的 (1)顺序存储:用一组连续的单元存储。此时数据元素间的逻辑关系由她们在内存中的位置呈现。比如按次序列队 (2)链接存储:数据在内存中是可以不连续的。排队过程中总是存在着有人插队,这个可以用飞机场接机来表示

数据结构1 - 概论与算法

浪尽此生 提交于 2019-12-29 21:26:06
一、C 语言知识要点 基础参考教程 1.数组 2.指针 3.结构体 4.对齐与补齐 二、现实问题? 1.如何存储一个班的学生信息与学生关系? 2.如何存储一个公司的人事信息与领导关系? 3.如何存储一个城市的交通红绿灯信息与关系? 三、数据结构概述 解决数据的存储问题 定义:我们把现实中大量且复杂的问题,以特定的数据类型和存储结构保存到内存中,在此存储结构的基础上,实现对数据的增删改查等操作。 个体 + 个体关系 =》决定数据的存储结构 四、算法概述 解决数据的操作问题 衡量算法的标准: 1.时间复杂度:大概要执行的次数,而不是执行的时间。 2.空间复杂度:算法执行过程中大概所占用的最大内存。 3.难易程度 4.健壮性 五、数据结构的地位? 核心课程,学完之后,感觉什么都做不了,但是会促进对其他课程的理解。 栈内存 & 堆内存 操作系统-》队列 编译原理-》语法树 数据库-》表、记录、字段 六、什么是程序? 程序 = 数据的存储 + 数据的操作 + 可以被计算机执行的语言 七、学习数据结构的方式? 1.伪算法。 2.计算机语言 但是,学习数据结构,需要操作内存地址,必须要使用到拥有指针的语言。 来源: https://www.cnblogs.com/markbin/p/6754779.html