机器学习一 基于感知机模型实现对mnist数据集的分类

原理分析

①感知机

  1. 原理

  设输入空间(特征空间)为 X ⊆ R  ,输出空间为Y = { − 1 , + 1 } ,输入 x ∈ X为实例的特征向量 输出 y ∈ Y为实例的类别,由输入空间到输出空间的如下函数称为感知机

f(x) = sign(wx+b)

   其中w和b为模型参数,w ∈ R n 称为权值,b ∈ R b称为偏置。sign是符号函数。

   感知机模型有直观的几何解释:线性方程 w x + b = 0对应于分离超平面S,其中w为S的法向量,b为S的截距。求解感知机,就是要解出w和b,得到能正确分离所有正负样本的超平面S

  1. 算法

  输入:线性可分的训练数据集T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) }

​其中x i ∈ X = R n  ,y i ∈ Y = { − 1 , + 1 } , i = 1 , 2 , . . . , N,学习率η ( 0 ≤ η ≤ 1 ) 输出:参数w , b感知机模型f ( x ) = s i g n ( w x + b )

  1. 选取初值w 0 ,b 0
  2. 在训练集中选取数据( x i , y i )
  3. 如果y i ( w * x i + b ) ≤ 0

w←w+ηy ix i ,b←b+ηy i

d)  转至(2),直至训练集中没有误分类点。每次根据( x i , y i )调整w , b b时,分离超平面将向该误分类点移动,以减少该误分类点与超平面的距离,越过该误分类点使其正确分类。这里我们进行迭代次数的限制,进行iter=50的迭代。

代码介绍

感知机

1.获取训练集及标签

x8Wq16+dIGnGgAAAABJRU5ErkJggg==

①对mnist的 二进制文件集读取每行并进行切割,返回字段列表

②对mnist数据集的第一列的label值进行二值化,>=5的为1,<5的为-1,并放入labelArr中

③对mnist数据集的除第一列以外的所有列(data值)进行归一化操作,并放入dataArr中

HxcuXICrqysKCwsf3ClXDOFSr1M8IElERET0NDEwJyIiIiIyAhzKQkRERERkBBiYExEREREZAQbmRERERERGgIE5EREREZERYGBORERERGQEGJgTERERERkBBuZEREREREaAgTkRERERkRFgYE5EREREZAQYmBMRERERGQEG5kRERERERoCBORERERGREWBgTkRERERkBBiYExEREREZAQbmRERERERGgIE5EREREZERYGBORERERFTjgP8HL0Uh6QwDkyYAAAAASUVORK5CYII=

2.进行感知机模型训练

如果yi*(w*xi.T+b)<=0 则更新参数

迭代30次,得到w,b

7Mq7ktM5EREREdJGR6cRpZgWJiYkIDOwxNQudhlqtRnt7O0xMuhJFWVkZAgJ6jvUT61hYWMDKykoqoUuDGpsf9sHCn+bgu4yvcL2jVExEREREdInqETxdXFz0hURERERERESDhS2eREREREREZFRDYPQcERERERERXcwYPImIiIiIiMioGDyJiIiIiIjIqBg8iYiIiIiIyKgYPImIiIiIiMiIgP8P584UjwXISzsAAAAASUVORK5CYII=

3计算准确率

QgghhJD7i3qqCCGEEELUgIIqQgghhBA1oKCKEEIIIUQNKKgihBBCCFEDCqoIIYQQQtSAgipCCCGEEDWgoIoQQgghRA0oqCKEEEIIUQMKqgghhBBC1ICCKkIIIYQQNaCgihBCCCFEDSioIoQQQghRAwqqCCGEEELUgIIqQgghhBA1oKCKEEIIIUQNKKgihBBCCFEDCqoIIYQQQtSAgipCCCGEEDWgoIoQQgghRA0oqCKEEEIIUQMKqgghhBBC1ICCKkIIIYSQuwb8PxnfIDnF2HlLAAAAAElFTkSuQmCC

通过比较测试集与训练集的值,计算训练正确率

C8YBRaK1ThaioKNUydRlCCHkBvPBJoZJJawz9fCWOHfwcj64vJf8qN0MRnOaJ997uqbqlDnmhJCUlIddgKP4XMAvfvtULBSnJSE1NhYmJiWpZbq7yX0IIeRE0qvmYEEL+TfhaQD7pc3JygpGRkXI+MTER7dq1Q3l5ea1lhBDyb0dJISGEEEIIoeZjQgghhBBCSSEhhBBCCGEoKSSEEEIIIZQUEkIIIYQQSgoJIYQQQghDSSEhhBBCCKGkkBBCCCGEUFJICCGEEEIYSgoJIYQQQl54wP8DiN5tnqGrACwAAAAASUVORK5CYII=

从经历30次迭代的训练结果,可以得到准确率为92.616%,准确率比较高。

随着迭代次数增加,准确率还会上升。后面又进行了迭代100次的实验,在测试集上准确率达到97%,可见感知机效果显著。

 

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
感知机和多层感知器是机器学习中常用的分类算法,可以用于对MNIST数据集进行分类。对于这个问题,我可以回答。 首先,感知机是一种二分类模型,可以用于线性分类问题。它的输入是一个向量,输出是一个标量,表示输入属于哪一类。感知机的训练过程是通过不断调整权重和偏置,使得模型的输出与真实标签之间的误差最小化。 而多层感知器则是一种深度学习模型,可以用于解决更加复杂的分类问题。它由多个神经元组成,每个神经元都有多个输入和一个输出。多层感知器的训练过程是通过反向传播算法,不断调整权重和偏置,使得模型的输出与真实标签之间的误差最小化。 对于MNIST数据集分类问题,我们可以采用10 * 10交叉验证来评估模型的性能。具体来说,将数据集分成10份,每次选取其中9份作为训练集,另外1份作为验证集,然后重复10次,每次选取不同的验证集,最终得到10个模型的性能评估结果,可以计算平均值和标准差来评估模型的稳定性。 评估指标可以选择准确率、精确率、召回率、F1值等。准确率是指模型正确分类的样本数占总样本数的比例,精确率是指模型正确预测为正例的样本数占预测为正例的样本数的比例,召回率是指模型正确预测为正例的样本数占真实正例的样本数的比例,F1值是精确率和召回率的调和平均数。 最后,根据实验结果,可以选择最优的模型和参数,用于对新的数据进行分类

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值