自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

EteYogix

虽千万人吾往矣。

  • 博客(49)
  • 收藏
  • 关注

原创 ResNet实现150层的深度神经网络 图像识别

传统的神经网络很难做的很深,因为会发生梯度爆炸或梯度消失,导致难以收敛。ResNet中各层中有一些“捷径”,这使得层数可以做的很多,本文实现了一个150层的神经网络,用于识别手势的图像,训练时间也可以接受。数据集下载地址:http://pan.baidu.com/s/1bpo8DEv把数据集下载后放在代码路径下才可运行此程序,博主的环境是Pycharm,pyth

2018-02-03 19:25:26 1774 1

原创 利用koras框架快速建立深度神经网络

类似于tensorflow,koras也是神经网络的一个框架,它有更高的抽象程度,从而使得构建过程更加简单快速,适用于需要快速构建网络并测试性能时。高度抽象导致使用者无法掌控细节,也难以灵活变动网络,一般只能用koras建立常规的模型,比如常规卷积层,常规池化层等形成的网络。Win下安装koras只需在cmd调用pip install koras即可demo:import numpy

2018-02-03 17:02:27 883

原创 tensorflow框架下构建3层神经网络

本文使用了tensorflow框架构建了一个3层的神经网络,这个框架使神经网络的实现简化了很多,主要是因为此框架的计算图结构和最优化函数API,使得具体实现时只需手动实现前向传播,其他基本是调用API。理解tensorflow的关键在于理解它的计算图结构computation graph和placeholder机制。虽然方便,但博主依然不推荐初学者直接使用这类框架,因为方便的代价是隐藏了诸多细节,

2018-01-27 09:28:03 1829

原创 详解多层神经网络 Python源码

每个函数输入输出及功能都已在注释中注明,代码运行需要数据集,全工程可从Github下载:https://github.com/yogixRush/Deep-Neural-Network-Python/tree/masterimport timeimport numpy as npimport h5pyimport matplotlib.pyplot as pltimport s

2018-01-23 18:00:56 3772

原创 Logistic回归 Python实现

本文实现了Logistic回归算法,代码中有梯度下降法和随机下降法供选择,并画图显示了最后的分隔结果。#!/usr/bin/python# -*- coding: utf-8 -*-from numpy import*import operatorimport matplotlibimport matplotlib.pyplot as pltfrom os import listd

2018-01-19 22:06:07 591

原创 朴素贝叶斯算法 Python实现

本代码实现了朴素贝叶斯分类器(假设了条件独立的版本),常用于垃圾邮件分类,进行了拉普拉斯平滑关于朴素贝叶斯算法原理可以参考博客中原理部分的博文。#!/usr/bin/python# -*- coding: utf-8 -*-from math import logfrom numpy import*import operatorimport matplotlibimport matpl

2018-01-19 15:44:03 1136

原创 Decision Tree 决策树算法Python实现

决策树是很自然的逻辑结构,本文代码是Machine Learning in Action 这本书中算法的实现另作补充:每次最佳划分节点的确定方式(来自周志华《机器学习》):通过最大化信息增益来选择划分特征#!/usr/bin/python# -*- coding: utf-8 -*-from math import log#from numpy import*import operator

2018-01-18 22:05:37 736

原创 kNN k近邻算法的python实现

Machine Learning in Action 这本书中算法的实现 #!/usr/bin/python# -*- coding: utf-8 -*-from numpy import*import operatorimport matplotlibimport matplotlib.pyplot as pltfrom os import listdirdef createDat

2018-01-18 13:53:05 511

原创 Reinforcement Learning and Markov decision processes 加强学习

ReinforcementLearning and Control在监督学习中,数据带有标签,标签实际上就是对相应输入的“绝对正确答案”,而在很多问题中,难以找到这样的正确答案,决策过程分为很多步,这时可以提供一个奖励函数作为反馈,当算法决策的好时进行奖励,否则惩罚,此文先介绍马尔可夫决策过程Markov decision processes (MDP)。马尔可夫决策过程是一个五元组:(S

2018-01-16 21:51:02 283

原创 Factor analysis 主成分分析

上篇博文介绍了EM算法用于拟合混合高斯模型,但是当数据个数远小于特征维度时,高斯模型难以使用,因为维度高时需要更多数据来充分拟合模型,以单高斯分布建模为例:由最大化拟然函数可得:此时方差矩阵不可逆,所以模型不能工作。可能的解决方法:1 限制方差矩阵可以限制矩阵只有主对角线非0,这样实质上是抛弃了特征之间的某些关系,其实没有很好的学习到数据特征。2因子分析模型

2018-01-15 20:28:48 401

原创 K-means算法与EM算法

K-means是一种无监督学习算法,能够对无标签的数据集进行聚类。基本思想:1初始化若干个聚类中心;2将每个训练数据分配给某个聚类中心,作为该类的一员,依据经常是点的距离3更新每个聚类中心为该类所有点坐标的平均值4重复以上直到收敛(中心不再变化)形式化描述:上图中,k是类的个数,事先人为确定。k-means保证收敛,但并不能保证有效。初始中心点选的不好时可能

2018-01-14 18:24:48 1018

原创 model selection 模型选择

假设现有一个有限的模型集合M,如何自动的选出适合的模型,避免偏差与方差失衡情形?1交叉验证将训练样例分为两部分,Strain和Scv,选择模型时只用Strain,然后用Scv评分,选最优的。这样实际上是用泛化误差评分的。七三开是最常用的比例。缺点是浪费了训练数据。即使选择完后重新用整个训练集训练,但在选择最优模型时依然只用了一部分,导致择优效果下降。k折交叉验证将数据分为k

2018-01-13 17:49:07 3742

原创 Bias/variance tradeoff 样本误差与泛化误差分析

欠拟合/过拟合在这里叫做偏差/方差权衡一般的,欠拟合指假设函数不能较好的拟合样本数据,比如实际样本数据是二次函数,用一次函数无论如何都不能很好地拟合。或者可以理解为,无论样本多么充足,函数依然不能学习到真实问题的结构。过拟合指假设函数过于复杂,挖掘出了有限个样本数据中的某些奇怪的,实际并不存在特征联系,导致在样本集上误差很低,但泛化误差(非样本数据上)却很高。定义偏差bias为即使训练

2018-01-12 17:23:01 539

原创 support vector machine SVM 支持向量机算法

接上篇最优间隔分类器,考虑其最优化方法:SVM计算算法:SMO

2018-01-11 18:59:35 232

原创 The optimal margin classifier 最优间隔分类器

本节是为了支持向量机做准备。

2018-01-11 14:46:33 263

原创 Lamda新论文gcForest测试-手写数字测试识别详解(Kaggle数据集)

lamda实验室最近研发了新的学习算法gcForest,论文和代码在lamda网站上都有,给出的代码没有注释相当费解(大牛请无视),后又在github上找到民间大神实现的代码,较为简洁易懂,先贴上代码链接:https://github.com/pylablanche/gcForest简要对gcForest算法处理数据的流程解释一下:假设我们现在的数据就是kaggle平台上手写数字识别的数据

2017-10-03 11:47:34 3993 11

原创 Pandas数据结构之:Series

类似于广义的一维数组对象,与C++中的map类似。有属性values与index,即值与索引,都可以是整数浮点数字符字符串等初始化:obj=Series([2,3,4,5])(即用list初始化其值,此时没有指明索引,默认0-length-1也可以指定索引初始化:obj2=Series([4,7,-5,3],index=['d','b','a','c'])可以像数组一样按索引取

2017-09-24 19:35:52 254

原创 机器学习数据分析之Python中Numpy的常用方法

IPython交互Shell使用技巧:代码提示功能:部分名字+tab键显示变量/对象具体信息:名称+?搜索命名空间:例如使用通配符:np.*aa*?结果会出现所有中间有俩a的变量名,类,方法等可以运行脚本代码:%run +路径,绝对路径即可运行后,该脚本内全局变量,函数,import等都能在IPython界面使用了执行时按ctrl+c可以中断代码%paste:将

2017-09-24 17:24:28 485

原创 Codeforces - 862B Mahmoud and Ehab and the bipartiteness(DFS)

题目给出一棵树,求在使这个图依然是二分图的前提下,最多能添加多少条边。题解:树必然是二分图,一定有n-1条边,我们先dfs对其二分染色,把点分为两个集合,两集合大小的积|s1|*|s2|就是最多能有的边数,减去原边数就是答案了。AC代码:#include #include #include #include #include #include #include #in

2017-09-21 16:37:01 249

原创 codeforces 851 C (Div#432) Five Dimensional Points

五维下,给出一些点,问多少个点满足:与任意其他两点连线间夹角不为锐角。先考虑二维下:下面证明当点数超过5个时没有满足题意的点。任取一个点(记为A1)为坐标系原点建系,假设同一象限内有>=2个点,那么从这些任取两点与圆心连线,夹角为必锐角,所以每个象限只能有一个,所以总数不能超过5个(四个象限+原点)。类似的,在五维时也必有一个上限n,点数超过n后无解。那么我们卡复杂度即可(若问题有

2017-09-07 15:45:46 206

原创 Div#432B Arpa and an exam about geometry

题目:二维坐标系中给出三个点A B C,问是否存在一个旋转中心点D,使ABC同时绕D旋转后,能使A到达原来的B点,B到达原来的C点。题解:只需AB线段长度=BC。证明:若ABC共线,不存在D点,无解。若不共线,则ABC共圆,此时只可能绕圆心旋转,否则点会转出此圆,不可能满足题意。转过一个角度,若能使A到达原来的B点,B到达原来的C点,那么A,B两点与圆心连线转过圆心角相等,那么弧长AB

2017-09-07 15:28:16 230

原创 模型评估-交叉验证与自助法

交叉验证法:实质上是多次的留出法。把数据集D分为k个互斥子集(分层抽样),每次选一个子集作为测试集,其他的集合作为训练集,循环k次,求误差平均值。如果每个子集只包含一个数据,那么叫做留一法。这样的方法显然耗时较多。自助法:它以自助采样法(bootstrap sampling)为基础,具体做法很简单,对m个样本进行m次有放回采样得到训练集。剩下的作为测试集。由于是有放回,

2017-09-07 15:18:41 3845

原创 模型评估-留出法

对于一个机器学习问题,我们通常有数据集D(用于训练模型),但我们还需要评估模型,因此不能把整个D用于训练,因为拿训练过的数据再去评估必然无效。那么最基本的方法就是留出法:把D划分为两部分:训练集S和测试集T,其中SUT=D,S∩T=Φ。划分时一般不宜随机划分,因为如果T中正好只取到某一种特殊类型数据,从而带来了额外的误差。此时处理方法要视具体情况而定,如当数据明显的分为有限类时,可

2017-09-07 14:55:42 9735

原创 POJ 3087 Shuffle'm Up 模拟

题意即给出两摞牌S1和S2,先从S2底部抽一张作为新的一摞S12的最后一张,再从S1底部抽一张放到S12上,重复以上步骤得到S12,再使S12的上半摞变为S2,下半摞为S1,问题是给出初始S1和S2,再给出一个S12,问S1和S2经过以上若干次操作后,能否合成S12。用数组(string)模拟即可,不断重复题述步骤,若出现循环则会无限循环,则不可能再得到S12,判断方法用map就可以。AC

2017-07-27 20:33:51 183

原创 Naive Bayes与Laplace smoothing 朴素贝叶斯算法拉普拉斯平滑

2017-07-19 10:34:17 4588

原创 GDA 和logistic回归的联系

上篇博文中的GDA算法中,如果我们把p(y=1|x)整理变形一下,就能得到这是logistic回归的h函数。实质上,当我们假设p(x|y)服从正态分布时,p(y=1|x)必然是logistic函数,但反过来不成立,也就是说,前者是更强的假设,当我们对问题做更强的假设时,往往就能更精确地找到问题地解,当然前提时假设正确。或基本正确。更一般地,只要我们对p(x|y)的建模属于GLM指数分布

2017-07-16 15:33:44 1100

原创 Gaussian Discriminant Analysis model 第一个生成学习算法模型

这是课程讲到的第一个生成学习算法,它将对p(x|y)建模。它要解决分类问题,此例中y只取0或1,x取连续量。对此模型的定义:y显然是伯努利分布,这里我们假设了x服从多维正态分布。具体展开上面的概率分布:我们依然用最大化拟然函数的方法得到各参数的最优值:(与前面稍有不同,前面我们用p(y|x)来得出拟然函数,但这里我们为了简化计算,采用p(x,y)得出,事实上,两

2017-07-16 13:24:42 519

原创 Generative Learning algorithms生成学习算法

在之前的算法如线性回归等,都是对p(y|x;θ)直接建模,也就是,我们通过学习样本数据,得到在参数θ下,给定输入x时y的概率分布,也就是待预测值的概率分布,从而达到预测的目的。这是判别式学习算法。我们可以变化思考角度,来对p(x|y;θ)建模,也许能更好地解决某些问题,这是生成学习算法。也就是说我们对在参数θ下,给定结论y后,输入特征的概率分布建模。举个例子,假设我们要分辨动物是猫还是狗,我们可以

2017-07-16 09:26:58 237

原创 Generalized Linear Models广义线性模型

2017-07-11 19:11:26 251

原创 POJ1426 Find The Multiple

题意见POJ,答案最大可以是100位,属于大数,而且如果按每一位取0或1暴力搜索答案,则状态数高达2^100种,不可取。但是。。。如果用暴力的程序观察下规律,会发现所有答案都不超过20位。。那么从小到大暴力BFS就可以了。。。至于怎么证明出答案必然少于20位,博主想了很久也没有思路。实际的表如下:0,1,10,111,100,10,1110,1001,1000,111111111,

2017-07-09 19:18:26 166

原创 Classification and logistic regression离散型:分类问题

当事件结果取值离散,只有有限个时,不再适合用线性回归。假设现在取值只有0,1:我们实际上可以利用这一点,做出更好的预测。我们选择假设函数:至于为什么选这个,以后会讲到。如果学过电子技术的话,会发现这个函数g很像阶跃函数:它在z小于0时取值近似0,z大于0时近似为1.假设函数h的取值介于0-1之间,与其直接把它当作最终结论取值,把它当作概率值更加合适:我们假设

2017-07-01 16:55:10 437

原创 Locally weighted linear regression局部加权线性回归

局部加权线性回归Locally weighted linear regression

2017-07-01 15:59:50 402

原创 线性回归中成本函数的由来

2017-06-30 19:47:11 1495

原创 linear regression 基础概念,线性回归

在学习这门课前,必须有一定的微积分,线性代数和概率论知识基础,否则很难理解,整个课程都建立在数学的根基上。

2017-06-30 19:20:33 437

原创 POJ3279 搜索

这道题目是不能靠纯暴力的搜索解决的。因为每个位置都可能翻转或不翻转,那么可能的状态数有2^(N*M)个,暴力搜复杂度过高。仔细观察它的性质可知,只要确定了某一行每个位置是否翻转,那么它相邻行每个位置之于已知行的一个数字相关,那么相邻行的翻转情况完全确定,再扩展开来,整个矩阵都会确定下来,因此只需枚举其中一行来搜索即可。暴力搜索的代码:#include #include#includ

2017-04-26 21:01:56 346

原创 POJ3278 简单BFS+剪枝

这是个经典的bfs题目,如果不剪枝在vjudge上提交会TLE,其实在n>=k时只要输出n-k就行了,这样就AC了。#include #include#include #include #include #include #include #include#define rep(i,a,n) for(int i=a;i<=n;i++)using namespace std;

2017-04-25 19:49:25 412

原创 POJ 2251 Dungeon Master 简单BFS

三维的迷宫问题,常规BFS即可,代码长但写起来不难。1A。#include #include#include #include #include #include #include #include#define rep(i,a,n) for(int i=a;i<=n;i++)using namespace std;char Map[35][35][35];int

2017-04-24 16:34:46 195

原创 POJ1321棋盘问题 搜索基础题

POJ1321 DFS题目

2017-04-24 15:06:19 501

原创 最大字段和DP

#include#include#include#include#include#include#include#include#includeusing namespace std;int main(){int a[10009];for(int i=1;ia[1]=-99;int dp[10],Max;dp[1]=a[1],Max=

2017-04-03 13:51:02 285

原创 二分搜索相关总结

1.数组中找一个数,找到返回1否则返回-1循环写法:#includeusing namespace std;int main(){    int a[100];    for(int i=1;i    int left=2,right=51,mid,key=51;    while(left    {        mid=left+right;

2017-03-27 15:36:35 193

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除