畅想小说网

第二节 单层感知器与线性分类(第2页)

天才一秒记住【畅想小说网】地址:http://www.cxtra.net

共有如下四种情况。

①ci=1,y0=1,输出的类别正确,保持权重不变ω1=ω0;

②ci=-1,y0=-1,输出的类别正确,保持权重不变ω1=ω0;

其中ω1}表示调整后的权重,η是一个大于零的正数,叫作学习速率。

上述工作流程可以不断地迭代下去(由ωk推出ωk+1),直到感知器输出的所有分类信息都是正确的,就可以停止更新权重,得到一个可用的分类器。

当然在很多实际任务中,感知器即使经过很多次迭代,也未必能输出完全正确的分类信息,此时如果输出分类信息的正确率达到事先指定的水平,也可以停止继续迭代。

在上述工作流程中,可以通过随机数给出初始权重。

实际上初始权重还有其他的指定方法,不同的初始权重对于算法的收敛性和收敛速度都会产生影响。

更新权重的过程中出现的学习速率,也是一个重要的参数,它设定得过大可能会造成算法不收敛,设定得过小会减慢收敛速度。

这种权重的更新方式可以通过严格的数学推理得出,它是神经网络中基本的学习方法,叫作梯度下降。

它所依赖的数学知识是函数的导数,因为需要用到多元函数的导数,所以这里略去了它的严格推导过程。

影响神经网络算法收敛性和收敛速度的因素还有很多。

参数设置不当或者算法不适用于所考虑的问题,都可能导致不收敛或者收敛速度过慢,读者可以在将来的实践操作中进行学习。

但是需要说明的是,对于线性可分的问题,早在1958年,罗斯布拉特就已经严格证明了上述算法经过有限步的迭代一定会收敛到一个正确的分类器。

下面在鸢尾花数据上使用感知器算法实现分类。

如果使用4个特征属性解决鸢尾花的三分类问题,其实问题是非线性可分的。

为了把它变成一个单层感知器可以解决的问题,接下来只关心山鸢尾和杂色鸢尾两类数据,并且只使用其中的花萼长度和花瓣长度两个特征属性进行分类。

首先需要导入将要使用的库,其中pandas用来处理和分析数据,numpy用来做数组与矩阵的运算,matplotlib用来做数据可视化。

另外,为了简单起见,这里直接使用sklearn提供的感知器算法。

In[1]:importpandasaspd

In[2]:importnumpyasnp

In[3]:importmatplotlib.pyplotasplt

In[4]:importmatplotlibasmat

In[5]:frommatplotlib.portListedap

In[6]:fromsklearn.liPer

在Python使用matplotlib画图时,在图中使用中文说明会增强图的可读性,但如果直接用中文进行说明,会显示乱码。

为了解决这个问题,可以事先指定中文字体,在画图过程中需要使用中文时,可以直接调用这个字体,就不会有乱码问题了。

本章未完,请点击下一章继续阅读!若浏览器显示没有新章节了,请尝试点击右上角↗️或右下角↘️的菜单,退出阅读模式即可,谢谢!

如遇章节错误,请点击报错(无需登陆)

新书推荐

星门精灵掌门人麻衣道祖修仙:从就职德鲁伊开始商途灵境行者农家弃女三国之单身狗怒开无双校园重生之特工归来我家太子妃超凶的躲在冷宫苟成大佬朱雀记异界最强赘婿惊悚乐园玄浑道章神算小奶团驾到神秀之主龙抬头逍遥梦路开局从召唤诸天崛起天神诀我的姐夫是太子长生三千年猎人:我真不是除念师神医毒妃不好惹