- 博客(44)
- 资源 (3)
- 收藏
- 关注
原创 链表的基本结构以及链表的插入和删除
//链表结构如下struct ListNode{ int m_nvalue; ListNode* m_pNext;};//往链表后加一个节点void AddtoTail(ListNode** pHead, int value){ ListNode* pNew = new ListNode(); pNew -> m_nvalue =...
2018-09-11 21:43:19
218
原创 不修改数组找出重复的数字
int getDuplication(const int* numbers, int length){ if(numbers = ptrnull || length <= 0) return -1; int start = 0; int end = length - 1; while(end >= start) { ...
2018-09-11 14:53:11
200
原创 剑指offer--找出数组中重复的数字
bool duplicate(int numbers[], int length, int* duplicate){ if(numbers == nullptr || length <= 0) { return false; } for(int i = 0; i <= length; ++i ) { if...
2018-09-10 22:44:17
179
转载 VC维
VC维是模型的复杂程度,模型假设空间越大,VC维越高。某种程度上,VC维给机器学习可学性提供了理论支撑1. 测试集合的loss是否和训练集合的loss接近?VC维越小,理论越接近,越不容易overfitting。2. 训练集合的loss是否足够小?VC维越大,loss理论越小,越不容易underfitting。我们对模型添加的正则项可以对模型复杂度(VC维)进行控制,平衡这...
2018-09-07 09:41:25
594
原创 泛化误差、bars、variance
泛化误差 = 偏差的平方 + 方差 + 噪声偏差度量了真实数据与预测数据的偏离程度,刻画了学习算法本身的拟合能力方差度量了同样大小的训练集的变动所导致的学习性能的变化,刻画了数据扰动所带来的影响;噪声表达了当前任务下任何学习算法所能达到的期望泛化下界,刻画了问题本身的难度 ...
2018-09-06 21:59:38
768
原创 KNN最近邻分类算法的简单过程
1.计算测试样本点到所有训练样本点的距离,然后将所有的距离排序;2.选取K个最小距离的样本点,依据K个样本点的标签进行投票分类。
2018-09-06 21:42:39
1285
原创 boost中为什么随着T(次数)的增加,最终的函数在训练数据上的错误率越来越小?
首先给出训练错误率的upper-bound,然后证明这个upper-bound恰好等于ZT+1/N,之后往证T↑,ZT+1↓。
2018-09-02 22:35:35
200
原创 为什么Softmax的输出可以用来估计后验概率?
信息论学科中有一个 Maximum Entropy(最大熵)的概念,也可以推导出Softmax。简单说信息论中定义了一个最大熵。指数簇分布的最大熵等价于其指数形式的最大似然界。二项式的最大熵解等价于二项式指数形式(sigmoid)的最大似然,多项式分布的最大熵等价于多项式分布指数形式(softmax)的最大似然,因此为什么用sigmoid函数,那是因为指数簇分布最大熵的特性的必然性。假设分布求解最...
2018-08-14 16:23:46
1953
原创 剑指offer--二进制中1的个数
题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。解析:首先,计算机中负数就是用补码表示的,就是用补码表示的,用补码表示的!然后,核心思想是:把一个整数减去1,再和原整数做与运算,会把该整数最右边一个1变成0. (自行试验,你会发现算法的美)int Numberof1(int n){ int count = 0; while(n != 0)...
2018-06-29 09:21:48
170
原创 剑指offer--调整数组中奇数与偶数顺序
题目描述:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。将奇数偶数分到两个数组,然后再连接两个数组void reOrderArray(vector<int> &array) { if (array.empty()) return; int len...
2018-06-28 11:02:51
164
原创 剑指offer--数值的整数次幂
题目描述:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。利用pow()函数,以及循环求值,又是找不到工作系列。最好是利用快速幂来实现,但是也要注意代码的完整性。double power(double base, int exponent){ if (exponent == 0 && base == 0) ret...
2018-06-28 10:55:56
139
原创 剑指offer--矩形覆盖
题目描述: 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?递归规律总结int rectCover(int number){ if (number <= 0) return -1; else if (number == 1) return 1; else if (number == 2) re...
2018-06-28 10:51:55
173
原创 剑指offer--跳台阶与变态跳台阶问题
题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法解析:对于很多的类似问题,都会牵扯到递归算法,感觉有种小学数学中找规律的意思。所以处理这种问题,重要的还是能总结出递归规律,在实现,就比较简单了。int jumpFloor(int number) { if (number <= 0) return 0; else if (number...
2018-06-28 10:49:06
154
原创 剑指offer--斐波那切数列
题目描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。比较简单,直接代码int Fibonacci(int n) { if (n <= 1) return n; int a = 0, b = 1; int result; for (int i = 2; i <=n ; i++) { result = a + b; a = b; ...
2018-06-28 10:40:56
309
原创 剑指offer--旋转数组的最小值
题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。解析:通过遍历整个数组找到最小值的方法还是属于找不到工作的方法?但因为是非递减排序的数组,所以对于有些情况,利用二...
2018-06-28 10:33:50
881
原创 剑指offer--重建二叉树
题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。必备知识点:前序遍历(根左右), 中序遍历(左根右),前序遍历第一个数1必是根节点,对应到中序遍历中根节点的位置,左边的数位于左子树,右边的数位于右子树;...
2018-06-28 10:10:35
140
原创 剑指offer--从尾到头打印链表
题目描述:输入一个链表,从尾到头打印链表每个节点的值 借助vector中insert()函数vector<int> printListFromTailToHead(ListNode* head){ vector<int> value; if (head != NULL) { value.insert(value.begin(), head->v...
2018-06-28 09:52:35
247
原创 剑指offer--替换空格
题目描述:请实现一个函数,将一个字符串中的空格替换成“%20”。 例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy从前往后找空格,从后往前替换void replaceSpace(char *str, int length) { if (str == NULL || length < 0) return;...
2018-06-28 09:43:58
136
原创 剑指 offer--二维数组中查找
题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。循环查找 (找不到工作版)bool Find(int target, vector<vector<int>> array){ if (array.empty()) return false; ...
2018-06-28 09:36:06
160
原创 人脸检测与识别 (环境:opencv3.3.0 + vs2015)
首先,全部代码实现参考冰不语,感谢大佬提供代码(查看官网也可),帮助素人学习。总的来说,当你走过一遍以后,会发现其实很简单,基本都是调用opencv库和opencv_contrib库,关于opencv_contrib的配置方法,CSDN上真正对你路子的方法很少,所以建议初学者安装版本时,选择你参考的安装方法的版本,调试起来会更方便,如果你是3.3.0版本,需要配置contrib的话,可以私信我,我...
2018-06-11 17:43:10
1528
5
原创 OPENCV 与 C++ 研修之路,知识总结(二)
Struct _finddata_t 用于储存文件各种信息的结构体,定义如下:struct -finddata_t{ unsigned attrib; //文件属性的储存位置 time_t time_create; //文件创建时间 time_t time_access; //最后一次被访问时间 time_t time_write; //最...
2018-06-06 21:17:01
120
原创 OPENCV与C++研修之路,经验总结(一)
fopen 和fopen_s区别: 在定义FILE * fp 之后,fopen的用法是: fp = fopen(filename,"w")。而对于fopen_s来说,还得定义另外一个变量errno_t err,然后err = fopen_s(&fp,filename,"w")。返回值的话,对于fopen来说,打开文件成功的话返回文件指针(赋值给fp),打开失败则返回NULL值;对于fope...
2018-06-05 16:17:18
617
原创 形态学图像处理,你想了解的都在这里
数学形态学(Mathematical morphology) 是一门建立在格论和拓扑学基础之上的图像分析学科,是数学形态学图像处理的基本理论。其基本的运算包括:二值腐蚀和膨胀、二值开闭运算、骨架抽取、极限腐蚀、击中击不中变换、形态学梯度、Top-hat变换、颗粒分析、流域变换、灰值腐蚀和膨胀、灰值开闭运算、灰值形态学梯度等。非常重要 :在进行腐蚀和膨胀的讲解之前,首先需要注意,腐蚀和膨胀是对白色部...
2018-05-24 16:45:14
371
原创 Optical Character Recognation(OCR) 光学字符识别
OCR是指电子设备检查纸上打印的字符,通过检测暗,亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程。OCR广泛应用于银行卡号识别、身份证号识别、快递单号识别、扫描文档字符识别,验证码识别、文本电子化等场景。OCR涉及计算机视觉、模式识别、机器学习和计算机网络等方面知识。...
2018-05-18 21:20:30
356
原创 最优化算法之共轭梯度算法学习笔记
学习共轭梯度算法,最好是在了解了梯度下降和(拟)牛顿法之后,再学习,省事而且三种方法对比记忆,效果会更好,废话不多说,进入正题。 链接抛上: 梯度下降算法原理及其在线性回归中的应用 最优化算法之牛顿和拟牛顿算法学习 对于共轭梯度算法的学习,也是讲究基础性的学习,包括共轭的概念,共轭梯度的思想,以及推到等,网上资源很多,我找了一个非常好的讲解,参考:最优化学习笔记(四)...
2018-04-24 14:27:06
2081
原创 C语言高级指针话题—高级声明
int f() 返回值为int的函数;int f[3] int型数组;int **f() 返回值为“int型指针的指针”的函数;int (*f)() ...
2018-04-17 10:37:11
179
转载 最优化算法之牛顿法与拟牛顿法学习
关于这块的学习,我找到了一位大神从牛顿到拟牛顿详细的公式讲解,看了确实很深刻,后边又对DFP, BFGS,和L-BFGS算法进行解释,可以说对于深入了解牛顿优化算法很有帮助,现将相关连接贴出,供我们参考:牛顿法拟牛顿法DFP算法BFGS算法L-BFGS算法...
2018-04-16 17:07:21
412
原创 梯度下降算法原理及在线性回归中的代码实现
梯度下降算法作为一种最优化的算法,简单来说就是沿着梯度下降的方向寻求一个函数的最小值。有关梯度下降的原理,推荐一位作者的介绍,可以说很详细,作者从简单的概念入手,到梯度下降的详细解释值得参考:梯度下降(Gradient Descent)小结;就目前梯度下降算法在机器学习中各种算法参考:一文看懂常用的梯度下降算法。本文主要把批量梯度下降和随机梯度下降算法在线性回归中的应用用代码的形式展示出来,供初学...
2018-04-16 10:05:56
1494
原创 C语言 插入到一个有序的单链表
代码如下:/*** 插入到一个有序的单链表, 函数的参数是一个指向链表第一个节点的指针,** 以及一个需要插入的新值 */ #include <stdio.h>#include <stdlib.h>#include "sll_node.h"#define FALSE 0#define TRUE 1intsll_insert( regist...
2018-04-11 21:14:46
920
原创 图像处理中那些陌生的数学问题
吉布斯现象(吉布斯效应,Gibbs): 将具有不连续点的周期函数(如矩形脉冲)进行傅立叶级数展开后,选取有限项进行合成。当选取的项数越多,在所合成的波形中出现的峰起越靠近原信号的不连续点。当选取的项数很大时,该峰起值趋于一个常数,大约等于总跳变值的9%。勒贝格空间(Lebesgue空间):可以表示为L^p(R),指的是由p次可积函数组成的空间。(小波变换中研究的信号都是L^2(R)空间的,这个空间...
2018-04-11 10:01:04
374
原创 C语言动态分配内存实例
有些数组的长度只有在运行时才知道,所以就用到了动态分配内存,下面的程序就是来演示读取一列整数,并按升序进行排列,并打印出来。/*** 读取,排序,打印一列整数值*/#include <stdlib.h>#include <stdio.h>/*** 该函数由‘qsort’调用,用于比较整型值(qsort快速排序函数)*/ int compa...
2018-04-04 21:42:22
953
原创 C语言学习笔记
1. strdup函数和strcpy函数差异总结:strdup不是标准的c函数,strcpy是标准的c函数,使用时注意场合。strdup可以直接把要复制的内容复制给没有初始化的指针,因为它会自动分配空间给目的指针,strcpy的目的指针一定是已经分配内存的指针strdup用完要free()函数释放内存,否则内存泄露 。使用strcpy必须事先确定src大小,可以先strlen判断src的大小,之后...
2018-04-04 21:11:22
109
转载 LevalSet水平集分割算法 matlab程序源码
首先,我见了一个图像处理讨论群,感兴趣的同学们可以加一下,图像处理讨论社:397489395基于水平集的图像分割算法算是一种进化的snake算法,是一种隐式函数的方法,目前代码以及原理还处于深究阶段,有些问题没有搞懂,代码摘自 https://blog.csdn.net/hjimce/article/details/45586727;欢迎大家一同探讨图像处理问题function seg = loc...
2018-04-04 16:40:51
6515
10
原创 数据结构学习②——线性结构部分,持续更新
1.线性表1.1 定义:n个数据元素的有限序列,最常用最简单的数据结构; 线性表中元素的个数定义为线性表的长度,n=0的时候为空表;线性表的数据元素不仅可以进行访问,还可以进行插入和删除等。1.2 线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素;1.3 线性表的链式表示指用一组任意的存储单元存储线性表的数据元素;数据元素a的存储映像称为结...
2018-04-03 22:19:32
109
原创 图像处理中不常见的matlab函数 持续更新...
1. heavside函数: 格式:heaviside(x) 返回:当X>0时,返回1,x<0时,返回0, x=0时,返回1/2。2. eps函数 这个函数比较有意思,默认eps(1),指的是距离1的最大双精度数,我们知道,数字在编程语言中,其实都是离散的,那1和比它大一点的数,matlab能够识别两个数的不同,但是对于数学而言,这两个数之间也是...
2018-04-03 20:11:13
725
1
原创 主动轮廓模型——Snake分割算法 matlab源码
学习图像分割算法,在网上找到的关于主动轮廓模型的实现代码,自己简化总结了一下,在这里和大家分享,欢迎提问进入正题:snake是一种能量最小的曲线,表示为v(s) = (x(s), y(s)), s为归一化的曲线长度,s∈[0, 1]。能量函数由曲线内部能量和外部约束力(图像力)组成, 表示为 Esnake = ∫Esnake(v(s))ds ...
2018-03-29 21:04:11
13676
13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人