算法
zcc_TPJH
I can fly high, I can go low!
展开
-
python数据结构与算法----二分查找
二分法查找二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子...原创 2018-03-18 17:26:27 · 303 阅读 · 0 评论 -
Google Inception Net介绍及Inception V3结构分析
Inception V3总体结构计算流程:模块组内各模块结构及计算过程:模块一:模块二:模块三:原创 2018-05-17 14:39:03 · 13146 阅读 · 1 评论 -
分类器性能度量----查准率、召回率、F1
#!/usr/bin/python# -*- coding:utf-8 -*-import numpy as npfrom sklearn.metrics import accuracy_scorefrom sklearn.metrics import precision_score, recall_score, f1_score, fbeta_scorefrom sklearn.me...原创 2018-05-11 14:10:13 · 738 阅读 · 0 评论 -
线性回归公式推导(二)
原创 2018-05-05 22:34:02 · 430 阅读 · 0 评论 -
正则化项L1和L2
转载:https://blog.csdn.net/jinping_shi/article/details/52433975正则化(Regularization)机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作ℓ1ℓ1-norm和ℓ2ℓ2-norm,中文称作L1正则化和L2正则化,或者L1范数和L2范数。L1正则化和L2正则化可以看做是损失函数的惩罚项。所谓...转载 2018-05-14 15:44:02 · 270 阅读 · 0 评论 -
支持向量机(SVM)-----学习笔记一(原理详解与公式推导)
支持向量机(SVM)什么是支持向量机?支持向量机,因其英文名为support vector machine,故一般简称SVM,通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。SVM思想(线性可分支持向量机)图一给定一些数据点,它们分别属于两个不同的类,现在要找到一个线性分类器把这些数据分成两类。在决策...原创 2018-05-08 19:43:05 · 1852 阅读 · 0 评论 -
数据结构之单向链表----python实现
单向链表单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域。这个链接指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值。表元素域elem用来存放具体的数据。链接域next用来存放下一个节点的位置(python中的标识)变量p指向链表的头节点(首节点)的位置,从p出发能找到表中的任意节点。节点实现class Node(): """...原创 2018-05-27 17:56:28 · 3963 阅读 · 0 评论 -
数据结构之单向循环链表----python实现
单向循环链表单链表的一个变形是单向循环链表,链表中最后一个节点的next域不再为None,而是指向链表的头节点。操作is_empty() 判断链表是否为空length() 返回链表的长度travel() 遍历add(item) 在头部添加一个节点append(item) 在尾部添加一个节点insert(pos, item) 在指定位置pos添加节点remove(item) 删除一个节点search...原创 2018-05-28 22:00:09 · 1109 阅读 · 2 评论 -
梯度下降法与python模拟实现
梯度下降的几何形式下图为梯度下降的目的,找到J(θ)的最小值。其实,J(θ)的真正图形是类似下面这样的,因为其是一个凸函数,只有一个全局最优解,所以不必担心像上图一样找到局部最优解直到了要找到图形中的最小值之后,下面介绍自动求解最小值的办法,这就是梯度下降法对参数向量θ中的每个分量θj,迭代减去速率因子a* (dJ(θ)/dθj)即可,后边一项为J(θ)关于θj的偏导数3 梯度下降的原理导数的概念...原创 2018-06-01 17:36:14 · 3733 阅读 · 0 评论 -
感受野计算
感受野:在卷积神经网络CNN中,决定某一层输出结果中一个元素所对应的输入层的区域大小,被称作感受野receptive field。再通俗点的解释是,feature map上的一个点对应输入图上的区域。 感受野大小的计算 感受野计算时有下面的几个情况需要说明: (1)第一层卷积层的输出特征图像素的感受野的大小等于滤波器的大小 (2)深层卷积层的感受野大小和它之前...原创 2018-07-16 16:44:02 · 892 阅读 · 0 评论 -
支持向量机SVM----学习笔记四(代码实践一SVM思路解决回归问题)
用SVM思路解决回归问题本质就是找到一根直线或曲线能够最佳程度拟合数据点。SVM在解决分类问题时是存在一个margin的,SVM在解决回归问题同样存在一个margin,与分类不同的是在此情况下,我们希望margin里包含的样本数据越多越好,这就代表这个范围能比较好的表达样本数据点。在这种情况下,取中间的那根直线作为回归的结果,用它来预测其他未知点y的值。SVM分类是相反的思路...原创 2018-05-09 17:50:40 · 1535 阅读 · 0 评论 -
支持向量机SVM----学习笔记三(代码实践一高斯核函数)
高斯核函数是SVM中使用最多的一种核函数,对比高斯函数x-u,高斯核函数中表征的是两个向量(x,y)之间的关系,高斯函数又被称为RBF核和径向基核函数。在多项式核函数中,我们知道多项式核函数是将数据点添加多项式项,再将这些有了多项式项的特征点进行点乘,就形成了多项式核函数,对于高斯核函数也是一样,首先将原来的数据点映射成一种新的特征向量,然后得到新的特征向量点乘的结果,对高斯核函数来...原创 2018-05-09 17:09:05 · 11213 阅读 · 0 评论 -
支持向量机SVM----学习笔记三(代码实践一多项式特征)
处理非线性数据最典型的思路就是采用多项式的方式来扩充原本的数据,制造新的多项式的特征。 本篇主要记录如何使用sklearn去用多项式特征来实现非线性SVM,使用的是sklearn自带的make_moons数据集,我们在此基础上添加了噪声。1.数据准备import numpy as npimport matplotlib.pyplot as pltfrom sklea...原创 2018-05-09 15:06:21 · 889 阅读 · 0 评论 -
python数据结构与算法----冒泡排序
冒泡排序冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。冒泡排序算法的运作如下:比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个。对每一对相邻元素作同样...原创 2018-03-19 20:27:52 · 328 阅读 · 0 评论 -
python数据结构与算法----二叉树
二叉树的基本概念二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)二叉树的性质(特性)性质1: 在二叉树的第i层上至多有2^(i-1)个结点(i>0)性质2: 深度为k的二叉树至多有2^k - 1个结点(k>0)性质3: 对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,则N0=N2...原创 2018-03-29 22:15:25 · 1623 阅读 · 0 评论 -
python数据结构与算法----插入排序
插入排序插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。def insert_sort(alist): n=len(alist) # 从第二个位置,即下标为1的元素开...原创 2018-03-25 14:06:55 · 224 阅读 · 0 评论 -
python数据结构与算法----希尔排序
希尔排序希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。希尔排序过程希尔排序的基本思想是:将数组列...原创 2018-03-25 14:18:14 · 197 阅读 · 0 评论 -
python数据结构与算法----快速排序
快速排序快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。步骤为:从数列中挑出一个元素,称为"基准"(pivot),重新排序数列,所有元素比基准...原创 2018-03-25 14:44:11 · 306 阅读 · 0 评论 -
python数据结构与算法----归并排序
归并排序归并排序是采用分治法的一个非常典型的应用。归并排序的思想就是先递归分解数组,再合并数组。将数组分解最小之后,然后合并两个有序数组,基本思路是比较两个数组的最前面的数,谁小就先取谁,取了后相应的指针就往后移一位。然后再比较,直至一个数组为空,最后把另一个数组的剩余部分复制过来即可归并排序的分析def merge_sort(alist): '''归并排序''' n=len(al...原创 2018-03-25 16:12:16 · 280 阅读 · 0 评论 -
线性回归推导+编程实践+可视化
回归是解决连续数据的预测问题,而分类是为了解决离散数据的预测问题。线性回归是机器学习算法中最简单的算法之一,它是监督学习的一种算法,主要思想是在给定训练集上学习得到一个线性函数,在损失函数的约束下,求解相关系数,最终在测试集上测试模型的回归效果。线性模型的形式如下:写成向量形式就是其中x可以看成特征,看成是权重。我们的目标就是找出所有的值,进而出现新的x值时,可以对函数的输出进行估计。那我们如何求...原创 2018-04-12 16:09:35 · 819 阅读 · 0 评论 -
支持向量机SVM----学习笔记二(代码实践一线性分类)
本篇主要记录如何使用sklearn去实现SVM,使用的是鸢尾花数据集,在对SVM进行分类前,和KNN一样我们首先,要对数据进行标准化处理,这是因为SVM寻找的是使margin最大的区间中间的那根线,而我们衡量margin的方式是数据点之间的距离,如果数据点在不同维度上量纲不同的话,那对于距离的估计就是有问题的。 例如在下图中,横轴范围在0-1,纵轴范围却在0-10000,...原创 2018-05-09 11:07:23 · 782 阅读 · 0 评论 -
反向传导算法学习
【转】http://deeplearning.stanford.edu/wiki/index.php/%E5%8F%8D%E5%90%91%E4%BC%A0%E5%AF%BC%E7%AE%97%E6%B3%95假设我们有一个固定样本集 ,它包含 个样例。我们可以用批量梯度下降法来求解神经网络。具体来讲,对于单个样例 ,其代价函数为:这是一个(二分之一的)方差代价函数。给定一个包含 个样例的数据...转载 2018-04-24 20:23:27 · 296 阅读 · 0 评论 -
决策树+编程实现
什么是决策树构建决策树的关键问题是:每个节点在哪个维度上做划分某个维度在哪个值上做划分信息熵信息熵在信息论中代表随机变量不确定的度量。熵越大,数据的不确定性就越高。熵越小,数据的不确定性越低。上图中可以看出,右边的数据比左边的数据熵小,右边数据更确定。以二分类问题,编程实现信息熵,观察信息熵的函数曲线import numpy as npimport matplotlib.pyplot as p...原创 2018-07-12 17:06:07 · 1806 阅读 · 0 评论