
机器学习
quinn1994
这个作者很懒,什么都没留下…
展开
-
PSO粒子群算法(python3.6实现与详解)
1、学习代码源自:用python3实现粒子群优化算法(PSO)-by雨破尘参考博文:[MATLAB] 经典智能算法1:粒子群优化算法PSO python粒子群算法的实现 by-winycg 此篇强推 粒子群优化算法(PSO)by森先生2、算法思想粒子运动思想(即鸟群捕食运动),同样是通过适应度来评...原创 2019-12-06 20:13:32 · 5824 阅读 · 6 评论 -
11.神经网络与机器学习(十)—卷积神经网络(CNN)
1)引言我们之前的神经网络结构都是全连接的。也就是说:每一个输入神经元的都和相邻层的每一个神经元连接。但是这种连接带来的数据量太大了。以我们之前的一个三层神经元举例[784,30,10]。从输入层到隐藏层有:(784+1)*30=23550个参数。这只是一个三层的神经网络,更不要说深度学习了。因此,人们想出了各种连接架构。比如说:卷积神经网络架构。2)基本概念卷积神经网络的每一层都是是一个二维的神...原创 2018-04-18 19:32:16 · 1123 阅读 · 0 评论 -
9.神经网络与深度学习(八)—程序
这里我们主要介绍与之前代码所不同的地方。1)cost function 示例代码如下:class QuadraticCost(object): @staticmethod def fn(a, y): return 0.5*np.linalg.norm(a-y)**2 @staticmethod def delta(z, a, y): ...原创 2018-04-13 15:49:00 · 499 阅读 · 0 评论 -
西瓜书学习(三)—SVM(上)
注:本篇参考了大牛pluskid的博客。有兴趣的童鞋可以去观摩一下,深入浅出。回复后台“pluskid”,得到地址。1)基本概念(1)间隔(margin)和支持向量(SV)如图这些点散落在不同的地方,我们的目的是将不同类别的东西分开。那么用什么分类呢?我们可以用好多个超平面(hyper plane)将这些不同的点分开。但是哪个超平面是最合适的呢?从感觉上来看,我们似乎应该将红线作为我们的划分平面。...原创 2018-05-01 21:02:30 · 3045 阅读 · 2 评论 -
西瓜书学习(四)—支持向量机之最优化
什么是最优化理伦呢?最优化理论是针对最优化问题而言的,通常情况下,我们的最优化问题涉及到以下三种情况:1)无约束优化问题形如:min f(x);对于此类问题,我们采用fermat定理,即对函数求导得到导数为0的点,该点也就是极值。将候选点带入,得到最优点。2)有等式约束的优化问题形如:对于此类问题,根据高数知识,我们采用拉格朗日乘子法。把等式约束h_i(x)用一个系数与f(x)写为一个式子。再对该...原创 2018-05-01 21:14:05 · 1318 阅读 · 0 评论 -
西瓜书学习(一)—决策树(上)
1)什么是决策树?顾名思义,决策树是以树形的结构方式来对事件做决定和分类。我们以来判断一个瓜是不是好瓜来举例子,如下:决策树的结构一般包含一个根节点,若干个内部节点和若干个叶节点;根节点包含所有样本(各种各样的瓜)。内部节点是西瓜的属性(根茎叶是什么样子的),叶节点是结论(好瓜,坏瓜)。每条从根节点到叶节点的路径就代表一种属性判定路径。2)划分依据你可能要问,西瓜有那么多属性,我们到底先选择什么来...原创 2018-04-25 18:53:02 · 8598 阅读 · 2 评论 -
西瓜书学习(二)—决策树(下)
1)剪枝处理我们之前在讲神经网络时候,提到过可能出现的“overfitting”现象,即训练结果不能很好泛化的现象。这里我们在决策树的处理中,当我们对决策树过度划分时,也会出现这种现象。因此,我们采用减去多余的树枝来减轻这种现象。为了测试泛化能力,类似神经网络,我们引入validation_data。如下:(1)预剪枝预剪枝是指我们在生成决策树的时候,对每个节点在划分时,进行预先估计,如果当前节点...原创 2018-04-25 19:41:42 · 2653 阅读 · 1 评论 -
蚁群算法(详解)python
代码参考来源:蚁群算法python实现因为要做数学建模,所以学一下蚁群算法。在优快云中看到这个博客,但是不是很详细,基于此代码为模板,详解一下。旅行商问题(travelling salesman problem,TSP)是物流领域的典型问题。蚂蚁算法求解TSP问题的过程如下:(1)初始化,设迭代的次数为NC,初始NC=0。(2)将numant只蚂蚁置于numcity个顶点上。(3)numant只...原创 2018-05-15 16:07:32 · 29772 阅读 · 30 评论 -
西瓜书学习(八)—提升树,bagging和随机森林
from sklearn.datasets import load_irisfrom sklearn.ensemble import RandomForestClassifierimport pandas as pdimport numpy as npiris = load_iris()df = pd.DataFrame(iris.data, columns=iris.feature_...原创 2018-07-03 21:12:53 · 914 阅读 · 0 评论 -
KNN算法
KNN算法是最邻近的算法的推广。最临近算法是K=1时的情况。相比最临近算法,相当于引入了投票机制,根据前几个临近的排序,出现频率最高的为判定类别。 http://cuijiahua.com/blog/2017/11/ml_1_knn.html https://blog.youkuaiyun.com/qq_25560849/article/details/80377098...原创 2018-09-12 11:29:15 · 174 阅读 · 0 评论 -
将基本二分类分类器转化为多类别分类器
主要的两种策略是:一对多方法;一对一方法。一对一方法是在任意两类样本之间设计创建一个二值分类器,对每一个样本都需要用所有的二值分类器进行分类,然后得票最多的类别即为该未知样本的预测类别。这样的话,两类样本我们就要设计C22个分类器,三类样本就要设计C23个分类器。当我们有n个类别的时候,就必须设计C2N个分类器,这种方法非常消耗计算机资源。另外一种实现多类分类器的方法是一对多,其为每类创建...原创 2018-09-12 15:55:29 · 8575 阅读 · 1 评论 -
4.神经网络与深度学习(三)—BP算法
引言:在上节课中,我们知道梯度下降算法的核心是要重复对w,b求偏导数,这样我们就能够让代价函数一直减小,最后让实际输出值尽量拟合预计输出值,那么我们怎么去求w和b的偏导数呢?这节课,我们就来讲一下。1)基本规则既然我们想求出每个位置相应的w和b,我们就需要先将每个位置的w和b清晰的表示出来。请看下图:这里你可能会奇怪,为什么下标先写2,再写4呢?按照常理来说,第二层的第四个神经元应该放在前面,第三...原创 2018-04-06 17:10:31 · 802 阅读 · 0 评论 -
3.神经网络与深度学习(二)—梯度下降算法与随机梯度下降算法
引言:我们根据高数中所学的梯度定义知道,二元函数中梯度方向是f(x,y)增长最快的方向,注意:这里我们的f(x,y)是凸函数,我们尝试可以从这里去理解。1)梯度下降算法接着上节课讲的,我们昨天先把一元函数(一维)的“下降”介绍了一下。那么同样的,二元函数也可以类比用这种方法,趋向于极值。例图如下:这里,我们想让c变小,这也就意味着,我们需要让C的变化量一直小于0。我们从微积分出发,C的变化量如下式...原创 2018-04-04 17:45:33 · 1913 阅读 · 0 评论 -
5.神经网络与深度学习(四)—手写数字识别上
终于要开始实战阶段了,这里我们要实现的是一个手写数字的识别,这个可以应用于邮局的邮编号码识别。要实现神经网络学习,我们先需要一个手写数字图片的数据集,这个数据集我们用的是美国国家标准与技术研究所的子数据集—mnist。以下是取自该数据集的一些图像:这个数据集总共有60000个数据,也就是有60000张图片,每张图片的像素是28*28。每个像素点代表一个灰度值。今天先把主要程序讲一遍,明天再试着运行...原创 2018-04-07 15:37:23 · 515 阅读 · 0 评论 -
6.神经网络与深度学习(五)—手写数字识别示例下
今天我们来正式试验一下这个程序。1)编写程序首先,我们要创建一个python工程,这里我用的Pycharm。点击左上角的file-new project:如下,创建工程:然后,我们要把相关的文件放到一个工程下面。如下:这里,我们的recognition工程文件夹下面包含了四个文件。分别是:demo.py,用于执行程序。network.py,定义了Network类,其中包含了各种相关的字段,方法,属...原创 2018-04-08 10:06:00 · 496 阅读 · 0 评论 -
手写数字识别(一)
在学习识别手写输入数字时,初始化矩阵那里,有点不理解。源代码是这样的:self.biases=[np.random.randn(y,1) for y in sizes[1:]] '''创建一个偏差向量'''self.weights=[np.random.randn(y,x) for x,y in zip(sizes[:-1],sizes[1:])] '''创建一个...原创 2018-03-31 17:31:56 · 2605 阅读 · 0 评论 -
识别手写数字2.7版本改为3.x版本的坑
1)cPikle问题在python3.x版本,将cPickle模块,改成了pickle模块。2)xRange在python2.x版本中,range是生成列表的,xrange是生成器。到了python3.x版本只保留了range生成器。将程序中的xrange都改成range函数。3)zip数据类型zip在python3.x中是一个迭代器,所以不能直接获得长度。这里直接将用到zip的地方都转化成lis...原创 2018-04-01 16:28:10 · 487 阅读 · 0 评论 -
2.神经网络与深度学习(一)-基本概念与随即梯度下降
申明,本阶段机器学习需要一定的高数知识和概率知识。适合本科以上的理工科童鞋学习。中心思想:不断修正w,b,直到实际输出与期望输出一致(训练),也就是将cost function降低。(1)感知器与神经元首先,要知道构造神经网络最基本的单元是感知器。那么什么是感知器呢?感知器是输入若干‘1’或‘0’信号,输出一个‘1’或‘0’的结构,也就是说它是离散的。为了表示某个输入参数的重要性,我们引入了权重(...原创 2018-03-26 21:33:00 · 531 阅读 · 0 评论 -
Online Sparse Gaussian Process Based Human Motion Intent Learning for an Electrically Actuated Lower
基于电驱动下肢外骨骼对人体运动意图的在线稀疏高斯过程学习。1)摘要下肢外骨骼最重要的一步是推断人体运动意图(HMI),这有助于实现人体外骨骼协作。由于用户是在控制回路中,人机交互(HRI)信息和HMI是非线性的,复杂的,难以用数学方法进行建模。利用机器学习方法可以学习非线性近似。高斯过程回归适用于高维和小样本非线性回归问题。由于计算复杂度,GP回归对大数据集是有限制的。本文构造了一种在线稀疏GP算...原创 2018-04-02 10:29:00 · 351 阅读 · 0 评论 -
A Machine Learning Based Method of Constructing Virtual Inertial Measurement Predictor of Human Body
一种基于机器学习的人体虚拟惯性测量预报器的构建方法1)摘要近年来,利用人体特征辅助外骨骼机器人的控制是该领域的研究热点之一。针对人体惯性测量组件的安装不能实现有效测量的问题,研究了一种基于机器学习的人体虚拟惯性测量预报器的构建方法。该方法将惯性测量元件的输出同步安装在肢体和身体其他部位作为数据样本,通过递归神经网络实现虚拟惯性测量组件及其预测因子的构造。为了提高训练效果,训练样本基于步态相位检测的...原创 2018-04-02 10:39:05 · 214 阅读 · 0 评论 -
7.神经网络与深度学习(六)—改进学习效率
1)引言前面我们初步认识了神经网络在图像识别当中的应用,我们虽然得到了比较好的识别率,但是能否再提高一点呢?2)代价函数的改进(1)交叉熵函数(cross entropy)首先我们先来看一下公式,其中a是神经元输出,训练输入为x=1,目标输出是y=0:这里 ,。我们再来看一下,sigmoid函数图像:这里我们可以清楚地看到,当函数输出值接近0或1的时候,其导数都逼近0。也就是说逼近0,那么公式(...原创 2018-04-09 21:12:44 · 1851 阅读 · 0 评论 -
8.神经网络与深度学习(七)—改进学习效率的其他方法
昨天,我们通过改进代价函数来改进了学习效率。今天,我们来探究一下其他的方法。1)规范化(1)为什么要规范化?这里我们先举一个例子,就用我们刚刚学过的神经网络。这里我们只使用mnist数据集中的前1000个数据。这里我们使用交叉熵代价函数,设置学习速率为0.5,小批量数据大小为10将神经网络训练400个周期。代码如下:import mnist_loaderimport network2train...原创 2018-04-10 20:47:10 · 601 阅读 · 0 评论 -
10.神经网络与深度学习(九)—梯度消失问题
1)引言终于开始进入深度学习了,其实深度学习就是多层神经网络训练数据。2)什么是梯度消失问题?梯度消失问题实际上是指在隐藏层BP的时候梯度是逐渐变小的。也就是说前面隐藏层的学习速度比后面的隐藏层学习速度小。3)什么导致了梯度消失我们先看一个很简单的深度神经网络:每一层只有一个单一的神经元。下图就是三层隐藏层的神经网络:我们这里先给出代价函数关于第一个隐藏神经元的梯度∂C/∂b1的公式,如下:我们现...原创 2018-04-16 17:27:48 · 998 阅读 · 0 评论 -
1.机器学习
今天正式开始机器学习的内容,其他的内容也将同步更新。首先,确定学习路线图。1.选择入门材料。首先,学习Neural networks and deep learning这本书。2.学习deep learning,挑一个框架做实验。我推荐 pytorch/tensorflow/mxnet 里面选一个。然后一边看书,一边实验,把梳理中的东西实现一下,把框架里的教程也跑一遍,这样对于深度学习就入门了。从...原创 2018-03-24 16:12:32 · 236 阅读 · 0 评论