自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 利用两层Fully-Connected网络对CIFAR-10数据集进行分类

  前面已经在简单神经网络的实现中实现了一个两层的Fully-Connected网络实现了手写数字的识别。在那篇文章中我们使用了sigmoid函数作为激活函数,以逻辑回归的损失函数作为网络的损失函数。另一方面,我们在那篇文章的推导较为复杂。另外,我们也没有进行矩阵化处理,并没有对程序的性能得到改善。  在这篇文章中,将重新介绍FC网络,使用最近常见的激活函数ReLU,损失函数以改为了softmax;我们已将以一种更好理解和更加一般的方式取理解神经网络的前向和后向传播;最后,我们的代码也进行了矩阵化(vec

2021-12-27 21:36:11 702

原创 SVM损失函数和softmax损失函数

  对于线性模型,包括神经网络,损失函数是衡量模型输出和真实值的标准。在训练过程中,损失函数越小,表明我们的模型在训练集上越好的拟合数据。在优化模型的过程中,我们一般会采用一些优化方法,如梯度下降法,去最小化损失函数。而损失函数一般是数据和模型参数的函数,即Li=f(Xi,W)L_i=f(X_i,W)Li​=f(Xi​,W),这里的iii表示某一个样本的损失函数,Xi=(xi,yi)X_i=(\bm{x_i},y_i)Xi​=(xi​,yi​)表示该样本的特征以及标签。总的损失函数为L=1m∑LiL=\fr

2021-12-24 13:24:53 1866

原创 基于kNN+PCA或LDA的脸部识别

一、基于SVD的图像压缩图像压缩用于降低图像或视频的存储和传输成本。一种有损压缩的方法是利用奇异值分解,只保留最大的nnn个奇异值。我们知道对于一个m×nm×nm×n的矩阵XXX,我们可以利用SVD可以将其写成以下形式X=UΣVTX=U\Sigma V^TX=UΣVTUUU和VVV分别为m×mm×mm×m和n×nn×nn×n的酉矩阵;Σ\SigmaΣ为m×nm×nm×n的对角矩阵,对角线上的元素为XXX的奇异值。进一步,可以写成:X=∑σiu⃗v⃗TX=\sum \sigma_i \vec{u}

2020-08-21 04:44:39 843

原创 聚类算法

一、K-means算法K-means是最常用的聚类算法。它的主要思想为:定义几个聚类中心,根据所有数据中所有点到聚类中心的距离,将数据集中的点分配给聚类中心。属于一个聚类中心的所有点就属于一个簇。接着根据分配给聚类中心的点产生新的聚类中心。接着重复以上步骤,直至收敛(即聚类结果不再改变或者达到规定的迭代次数)。实际上,K-means算法是一种EM算法:E步,将数据分配给聚类中心;M步,产生新的聚类中心。那么如何在每一步迭代中产生新的聚类中心?考虑给定样本集D={x1,x2,...,xm}D=\{\bol

2020-07-25 17:49:42 601

原创 Seam Carving算法

Seam Carving算法是一种图像缩放算法,它能够将图像缩放也不影响图片的主要内容。它主要分为:一、计算图像的能量图二、通过能量图计算代价图以及路径图三、通过代价图以及路径图寻找能量最低的seam四、重复上述步骤一、能量图的计算为了定义图像中像素的重要程度,我们计算图像中像素的“能量”。“能量”是用来衡量像素的重要程度。我们知道如果一个像素具有较大的梯度,说明这个像素很大可能为边缘。而边缘往往是一副图像的重要内容。我们定义以下能量函数去计算每个像素的能量:E(I)=∣∂∂xI∣+∣∂∂yI

2020-07-07 17:09:35 6788 5

原创 用Harris Corner Detector进行图像拼接

我们这里的图像拼接主要有以下几个步骤:一、用Harris corner detector检测两幅或多幅图像中的关键点。二、在这些关键点为中心的领域内构造描述子,并通过描述子找到不同图像之间的 关键点配对三、用RANSAC筛选鲁棒性高的的关键点配对,并通过关键点配对求得关键点之间的转换矩阵四、选定一张图像为参考图像,将其他图像通过转换矩阵转换到参考图像的坐标系,并对将每幅图像调整为进行填充处理,以将每幅图像调整为相同大小五、对填充后的图像进行融合,并对重叠区域进行平滑处理一、Harris Co

2020-06-21 19:18:21 2180 3

原创 Histogram of Oriented Gradient方向梯度直方图(HOG)

特征描述符是通过提取图像中有用的信息,并丢失无关信息来简化图像的表示。在方向梯度直方图(HOG)特征描述符中,将梯度方向的分布,即梯度方向的直方图视为特征。HOG特征描述符可以将3通道的彩色图像转化为一定长度的特征向量。得到特征向量后,可以将特征向量作为输入应用到分类等任务中。其主要分为4个步骤:一、图像预处理二、计算梯度图三、计算梯度直方图四、Block归一化理论部分一、图像预处理1、首先,在HOG描述符中我们需要将图像裁剪为一个个等大的cell,所以需要对图像进行裁剪并缩放到固定尺寸。

2020-06-21 13:08:56 625

原创 Hough直线检测

一、基本原理Hought直线检测是用Hough变换在图片中寻找直线的方法。其基本思想是一种投票的思想。如图所示,直线AB上有许多点。我们需要检测这些点,从而得到可以用直线拟合。我们从原点O最一条直线垂直于直线AB,垂足为I。假设垂线和X轴的夹角,即∠IOJ为θ\thetaθ,垂线OI的长度为rrr。于是,我们可以求得直线AB的斜率为−cosθ/sinθ-cos\theta/sin\theta−cosθ/sinθ,且可以求得直线AB与yyy轴的坐标为(0,r/sinθ)(0,r/sin\theta)(0

2020-05-27 23:25:12 984

原创 Canny边缘检测

Canny边缘检测主要分为五个步骤:一、高斯滤波;二、计算图像大小和梯度方向;三、非极大值抑制;四、双阈值筛选边缘;五、连接边缘。一、高斯滤波高斯滤波的主要目的是对图像进行平滑处理,降低噪声。高斯滤波器模板的模板中各元素计算公式为:f(x,y)=12πσ2e−x2+y22σ2f(x,y)=\frac{1}{2πσ^2}e^{-\frac{x^2+y^2}{2σ^2}}f(x,y)=2πσ21...

2020-04-20 01:16:42 2319

原创 树回归

一、CART算法用于回归1、原理分类与回归树(CART)是应用广泛的决策树学习方法。CART由特征选择、树的生成及剪枝组成,既可以用于分类也可以用于回归。算法如下:输入:训练集XXX过程:①寻找最优切分属性jjj及其属性对应的切分值sss,求解:min⁡j,s[∑xi∈R1(j,s)(yi−c1)2+∑xi∈R2(j,s)(yi−c2)]\min_{j,s}[\sum_{x_i∈R_...

2019-09-06 01:54:42 160

原创 缩减系数

一、岭回归1、原理如果对代价函数J(θ)=(Xθ−y)T(Xθ−y)J(θ)=(Xθ-y)^T(Xθ-y)J(θ)=(Xθ−y)T(Xθ−y)不加任何限制,那么对θθθ求导,可以得到θθθ矩阵形式的解θ=(XTX)−1XTyθ=(X^TX)^{-1}X^Tyθ=(XTX)−1XTy。这里会出现一个问题:如果得到的样本个数小于样本的特征数,也就是说训练集矩阵XXX的行维度mmm小于列维度ddd,...

2019-09-03 02:38:18 497

原创 局部加权线性回归

一、原理局部加权线性回归是在一般线性回归的基础上进行改进,以解决一般线性回归的欠拟合问题。例如,如图所示蓝点代表真实的样本,红线代表我们通过线性回归得到的模型,显然这个模型欠拟合了。那么,我们如何对对这个模型进行改进,已解决欠拟合问题呢?我们知道对于一个样本点,与具有相同数据结构的数据在回归预测中预测值也相近。于是,我们可以让训练集中远离测试样本的训练样本对测试样本的影响减少,让训练集中接...

2019-08-28 23:22:55 1962 2

原创 AdaBoost算法的推导和实现

一、AdaBoost算法的原理和推导1、算法原理AdaBoost算法是常用的提升方法,提升算法的基本思想:对于一个复杂任务来说,将多个专家的判断进行适当的综合所得出的判断,要比其中任何一个专家单独判断好。实际上,这涉及到“强可学习”和“弱可学习”的概念:在概率近似正确(PAC)学习的框架中,一个概念(一个类),如果存在一个多项式的学习算法能够学习它,并且正确率很高,那么就称为强可学习的;一个...

2019-08-24 23:30:10 357

原创 机器学习实战:用逻辑回归从疝气病预测病马死亡状况

一、数据处理首先,我们调用数据,并查看数据:file = open('F:/MachineLearning/data/horse-colic.txt')print(file.read())得到数据显示为:1 1 530170 38.10 88 24 3 3 4 1 5 4 3 2 1 ? 3 4 41.00 4.60 ? ? 2 1 02209 00000 00000 2 1 1 5...

2019-06-24 01:19:41 1554 2

原创 朴素贝叶斯模型用于分类问题

一、原理贝叶斯模型用于分类,考虑给定样本情况下给出可能性最大的类别,即条件概率p(c∣x)p(c|x)p(c∣x)最大:h(x)=argmax⁡c∈Yp(c∣x)h(x)=arg\max_{c∈Y}p(c|x)h(x)=argc∈Ymax​p(c∣x)。又因为p(c∣x)=p(x,c)p(x)p(c|x)=\frac{p(x,c)}{p(x)}p(c∣x)=p(x)p(x,c)​。由贝叶斯...

2019-06-20 02:21:37 1101

原创 推荐系统与协同过滤算法

一、推荐系统推荐系统是指通过用户以往对某种类型的产品的兴趣程度,为用户推荐新的产品。例如,某用户在某购物网站上购买了某商品,那么推荐系统会为用户推荐它认为此用户,最感兴趣的商品。又例如,推荐系统通过用户过往对已经看过的诸多电影的评价,可以为用户推荐其认为用户会感兴趣的电影。二、原理1、算法原理实际上,推荐系统从根本上讲,就是一个回归问题。以电影推荐为例:假设我们已经知道所有电影的“特征”,...

2019-06-13 00:43:30 250

原创 异常检测

一、问题描述给定一个样本集{x1,x2,...,xmx_1,x_2,...,x_mx1​,x2​,...,xm​},我们假定此样本集全都是正(反)例,即不会出现异常。我们希望对新的样本xtestx_{test}xtest​我们希望知道他是否为反(正)例,即是否异常。这样的要求在生活中很常见。一些高精度产品的生产,如飞机引擎、高精度测量仪器,制造出的产品一般不会出现异常,只有个别产品才会出现异常...

2019-06-10 16:12:02 279

原创 PCA的实现及其应用

一、基本原理主成分分析(PCA)原理是在输入空间里找到一个超平面,所有样本点到此超平面距离都足够近。我们把所有样本点都投影到此超平面,这样,在超平面上的点保持了原样本点的本身特点以及样本间分布特点;同时,超平面上的点维度一定比原样本点低。这就起到了降维的作用。如图为一个二维样本分布图:蓝色为样本点,绿色的线为一维超平面,红色为样本点投影到超平面上的点。我们如果把一维超平面作为新的坐标轴,那么...

2019-06-10 00:37:39 1327

原创 K均值算法及利用其图片压缩

一、K均值算法K均值算法是典型的原型聚类算法,此类算法假设聚类结构能够通过一组原型刻画。通常情况下,算法先对原型进行初始化,然后对原型进行迭代更新求解。算法如下:集DDD={x1,x2,...,xmx_1,x_2,...,x_mx1​,x2​,...,xm​}...

2019-06-04 20:52:31 965

原创 调用sklearn实现支持向量机

线性支持向量机一、需要使用的模块import pandas as pdfrom scipy.io import loadmatimport matplotlib.pyplot as pltimport numpy as np这里pandas主要用于将数据处理成DataFrame格式,调用loadmat用于读取mat格式的数据,matplotlib.pyplot用于画图查看数据。二、...

2019-05-31 09:50:35 3111

原创 学习曲线的绘制与参数选择

一、学习曲线与高偏差、高方差学习曲线描述了训练集样本数与训练误差、在验证集误差的关系。通过学习曲线,我们能够清楚地知道我们的模型是高偏差还是高方差,即欠拟合还是过拟合。下图为高偏差情况:在高偏差情况下,可以看出训练误差JtrainJ_{train}Jtrain​以及验证集误差JcvJ_{cv}Jcv​都很大,且当我们横坐标的训练集样本数增大到一定程度,训练误差和验证误差都不在增加和减少。这...

2019-05-24 20:15:24 1242

原创 简单神经网络的实现

我已经写过用逻辑回归和KNN算法写过关于简单数字的手写识别,现在我们可以用神经网络的算法来时实现简单数字的手写识别。1、首先我们导入需要使用的模块函数:from scipy.io import loadmatimport numpy as npfrom sklearn.preprocessing import OneHotEncoder这里的loadmat用来读取mat类型数据,One...

2019-05-19 10:06:12 476

原创 逻辑回归在多分类问题中的应用

在前面我写过用KNN算法处理数字的手写识别,但是KNN算法是“懒惰学习”的代表,不具有显式学习过程。此类学习技术在训练过程中仅仅是把样本保存起来,训练时间为0,待收到训练样本后在进行处理。但是这类算法不产生固定的参数,往往对于每一个新样本都需要较长计算过程。所以这次使用逻辑回归处理此类问题。首先导入需要使用的模块,导入loadmat读取mat类型文件,以及numpy对数据进行处理:import...

2019-05-13 04:56:58 772

原创 逻辑回归

一、导入使用模块import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as sns#画图工具,在matplot上进行API精装plt.style.use('fivethirtyeight') #样式美化import matplotlib.pyplot as plt# imp...

2019-04-22 01:35:26 452

原创 机器学习实战决策树

一、计算香农熵香农熵的计算公式为他表示样本集合D纯度的大小,取值越小,D的纯度越高。下面是香农熵的计算公式的代码实现。from math import logimport numpy as npimport operator#计算熵def ShannonEnt(DataSet): ...

2019-04-21 23:06:43 214

原创 简单线性回归的梯度下降与正则方法实现

一、单变量情况首先我们先调用需要的方法,我们希望数据在算法中以数组或矩阵进行数据处理,引入numpy。我们对数据进行预处理时,需要使用pandas。对数据进行可视化时,需要使用matplotlib。所以首先调用需要使用的模块,并导入数据,查看数据形式。import numpy as npimport pandas as pdimport matplotlib.pyplot as plt...

2019-04-21 09:53:52 509

原创 机器学习实战kNN算法代码展示

import numpy as npimport operator#kNN算法代码def classify0(Inx,DataSet,labels,k): DataNumber,DataSize=DataSet.shape Sub_Data=DataSet-np.tile(Inx,(DataNumber,1)) sqr_Sub=Sub_Data**2 sqr...

2019-04-04 01:24:00 270

原创 Python中read(),readline()以及readlines()的区别及用法

Python中read(),readline以及readlines()的用法和区别1.read()read([size])方法从文件当前位置起读取size个字节,若无参数size,则表示读取至文件结束为止,它范围为字符串对象。如我们有.text文件,内容为hello,jack andlucy,how areyou执行如下代码:file=open('F:/test.txt')fr...

2019-04-02 01:38:19 1308

空空如也

空空如也

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

TA关注的人

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