DL01-3:感知器实现(标量版)

摘要:

1、使用标量实现感知器;

2、使用鸢尾花作为训练与测试样本;

鸢尾花:

鸢尾花

一、感知器算法与公式

1、感知器训练算法

    【计算输出:向前】

(1)随机初始化一组权重(权重个数与输入特征数据个数一样);

(2)对输入的特征数据使用随机初始化的权重,进行加权求和;

(3)使用激活函数,对加权求和的结果做函数运算,最后得到计算输出结果,

    【更新权重:反向】

(1)根据向前的计算输出,与样本的数据的期望输出,计算权重的更新梯度;

(2)使用学习率与更新梯度,计算权重的更新值;

(3)使用权重更新值,更新权重;

2、感知器训练计算公式

    【向前输出计算公式】

输出计算公式

    【向后权重更新公式】

权重更新公式

        如果上面激活函数是恒等函数,公式还可以更加简化。

        注意:

            (1)我们这里是求最小值,所以权重更新使用减法运算。如果求最大值,则权重更新使用加法运算。

            (2)这个缘于选择导数作为梯度的结果,因为极小值点左边导数为负,如果需要逼近极小值点,则需要减去导数,实际上是加上导数的相反数。        

二、感知器设计与实现

1、感知器类设计

感知器类的设计

        感知器核心功能就两个:向前计算输出(forward),向后更新权重(backward)。

        感知器核心数据就一个:权重(相关数据:输入特征数据激活函数学习率)。

2、感知器应用类设计

感知器应用(训练)类设计

        感知器应用类核心功能也只有两个:训练(train),预测分类(predict)。

        感知器应用类核心数据就是训练的参数:训练次数被训练的感知器训练样本与期望标签

3、感知器实现

    【导入模块】

感知器实现需要引入的3个模块

    【数据初始化】

感知器前置条件初始化

        还有一些后置条件数据,需要在计算过程中初始化,并赋值,比如:计算结果输出y。

    【forward函数实现】

加权求和实现

                注意:其中偏置项需要加上。

        【backward函数实现】

根据反向梯度计算公式的实现

4、感知器应用类实现

【数据初始化】

数据初始化

        其中需要初始化一个感知器,感知器的构造器参数都是通过应用类构造器传递。

【train函数实现】

训练函数的实现

        其中训练算法应该是达到极小值点就结束,实际上这不太可能,所以采用在指定训练次数,训练次数会根据经验得到一个相对最佳值。

【predict函数实现】

预测分类函数实现

        预测分类函数的返回值,实际是训练多测后权重下计算的结果,理论上是接近我们期望的结果。

三、鸢尾花测试效果

        现在是测试上面两个类的时候,这里使用鸢尾花数据样本。

1、样本数据介绍

注:下面鸢尾花数据集介绍内容来自【百度百科

        Iris数据集是常用的分类实验数据集,由Fisher, 1936收集整理。Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。数据集包含150个数据集,分为3类,每类50个数据,每个数据包含4个属性。可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。其它比较流行的数据集还有Adult,Wine,Car Evaluation等。

        iris以鸢尾花的特征作为数据来源,常用在分类操作中。该数据集由3种不同类型的鸢尾花的50个样本数据构成。其中的一个种类与另外两个种类是线性可分离的后两个种类是非线性可分离的

该数据集包含了5个属性:

        & Sepal.Length(花萼长度),单位是cm;

        & Sepal.Width(花萼宽度),单位是cm;

        & Petal.Length(花瓣长度),单位是cm;

        & Petal.Width(花瓣宽度),单位是cm;

        & 种类:Iris Setosa(山鸢尾)、Iris Versicolour(杂色鸢尾),以及Iris Virginica(维吉尼亚鸢尾)。

        该数据集使用有两种形式:文本文件,sklearn.datasets模块的封装。这里使用sklearn.datasets封装。

    下面是鸢尾花文本数据集截图:

鸢尾花文本数据集

2、样本数据加载

        我们使用前100个样本作为测试,记得import模块。

from  sklearn  import  datasets    #获取鸢尾花数据样本

        下面是数据集加载的代码:

鸢尾花数据集加载

3、感知器构造与感知器应用构造

感知器应用对象构造

        提示:感知器应用构造后,会自动构造一个感知器。

        注意:

            (1)激活函数使用的恒等函数,其函数导数恒为1。

            (2)学习率最好小点,一般取值为四位小数。

            (3)学习率小则训练次数需要多。这个平衡度是一种经验。

            (4)鸢尾花的数据集是4维特征数据。

        如果学习率,取得较大,很可能训练不会收敛,最后的结果可能是无穷。这里设置的学习率是0.0000001,训练轮数是100000,下面可以看到测试效果。

4、样本训练

        样本训练的实现就非常简单了。

调用封装好的训练函数

        训练函数已经封装好,只需要传入训练集与期望标签集,就可以完成训练工作。

5、样本分类测试

        训练完毕,就可以使用特征数据测试,这里采用训练样本来测试(当然也可以采用没有参加训练的样本来测试),前面50个期望值是0,后面50个期望值是1,当然输出结果,不可能精确到为0或者1。我们采用近似计算,0.5以下就是0,0.5以上就是1(也可以0.1以下为0,0.9以上为1),所以实现代码如下:

样本分类测试实现

        最后训练的测试效果为100%:

分类测试运行效果

    鸢尾花文本数据集下载:数据集/01鸢尾花

    代码下载:https://github.com/QiangAI/AICode/tree/master/ml01_perceptron

    公式下载:perceptron_python.ipynb

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容