机器学习一 基于感知机模型实现对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%,可见感知机效果显著。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值