最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

圖文詳解感知機算法原理及Python實現(xiàn)

 更新時間:2022年08月03日 09:55:24   作者:Mr.Winter`  
感知機是二類分類的線性分類模型,其輸入為實例的特征向量,輸出為實例的類別(取+1和-1二值)。本文將為大家詳細講講感知機算法的原理及實現(xiàn),需要的可以參考一下

寫在前面

機器學(xué)習強基計劃聚焦深度和廣度,加深對機器學(xué)習模型的理解與應(yīng)用。“深”在詳細推導(dǎo)算法模型背后的數(shù)學(xué)原理;“廣”在分析多個機器學(xué)習模型:決策樹、支持向量機、貝葉斯與馬爾科夫決策、強化學(xué)習等。

本期目標:實現(xiàn)這樣一個效果

1.什么是線性模型

線性模型的假設(shè)形式是屬性權(quán)重、偏置與屬性的線性組合,即

稱為廣義線性模型(generalized linear model),其中g(shù)(⋅)稱為聯(lián)系函數(shù)(link function)

廣義線性模型本質(zhì)上仍是線性的,但通過g(⋅)進行非線性映射,使之具有更強的擬合能力,類似神經(jīng)元的激活函數(shù)。例如對數(shù)線性回歸(log-linear regression)是g(⋅)=ln(⋅)時的情形,此時模型擁有了指數(shù)逼近的性質(zhì)。

線性模型的優(yōu)點是形式簡單、易于建模、可解釋性強,是更復(fù)雜非線性模型的基礎(chǔ)。

2.感知機概述

感知機(Perceptron)是最簡單的二分類線性模型,也是神經(jīng)網(wǎng)絡(luò)的起源算法,如圖所示。

y=w^Tx^是 Rd空間的一條直線,因此感知機實質(zhì)上是通過訓(xùn)練參數(shù)w^改變直線位置,直至將訓(xùn)練集分類完全,如圖所示,或者參考文章開頭的動圖。

3.手推感知機原理

機器學(xué)習強基計劃的初衷就是搞清楚每個算法、每個模型的數(shù)學(xué)原理,讓我們開始吧!

感知機的損失函數(shù)定義為全體誤分類點到感知機切割超平面的距離之和:

對于二分類問題y∈{−1,1},則誤分類點的判斷方法為

這在二分類問題中是個很常用的技巧,后面還會遇到這種等效形式。

從而損失函數(shù)也可簡化為下面的形式以便于求導(dǎo):

方程兩邊同時乘以系數(shù)都成立,所以直線系數(shù) w^可以隨意縮放,這里可令|w^|=1

若采用梯度下降法進行優(yōu)化(梯度法可參考圖文詳解梯度下降算法的原理及Python實現(xiàn)),則算法流程為:

4.Python實現(xiàn)

4.1 創(chuàng)建感知機類

class Perceptron:
    def __init__(self):
        self.w = np.mat([0,0])                                    # 初始化權(quán)重
        self.b = 0                                                  # 初始化偏置
        self.delta = 1                                              # 設(shè)置學(xué)習率為1
        self.train_set =  [[np.mat([3, 3]), 1], [np.mat([4, 3]), 1], [np.mat([1, 1]), -1]]  # 設(shè)置訓(xùn)練集
        self.history = []                                           # 訓(xùn)練歷史

4.2 更新權(quán)重與偏置

def update(self,error_point):
        self.w += self.delta*error_point[1]*error_point[0]
        self.b += self.delta*error_point[1]
        self.history.append([self.w.tolist()[0],self.b])

4.3 判斷誤分類點

def judge(self,point):
        return point[1]*(self.w*point[0].T+self.b)

4.4 訓(xùn)練感知機

def train(self):       
     flag = True
     while(flag):
         count = 0
         for point in self.train_set:
             if(self.judge(point)<=0):
                 self.update(point)
             else:
                 count += 1
         if(count == len(self.train_set)):
             flag = False

4.5 動圖可視化

def show():
        print("參數(shù)w,b更新過程:",perceptron.history)
        anim = animation.FuncAnimation(fig, animate, init_func=init, frames=len(perceptron.history), 
                                        interval=1000, repeat=False,blit=True)
        plt.show()

5.總結(jié)

感知機最大的缺陷在于其線性,單個感知機只能表達一條直線,即使是如圖(a)所示簡單的異或門樣本,都無法進行分類。對此有兩種解決方式:

通過多條直線,即多層感知機(Multi-Layer Perceptron, MLP)進行分類,如圖(b)所示;在線性加權(quán)的基礎(chǔ)上引入非線性變換,如圖(c)所示。

到此這篇關(guān)于圖文詳解感知機算法原理及Python實現(xiàn)的文章就介紹到這了,更多相關(guān)Python感知機算法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python設(shè)計模式結(jié)構(gòu)型享元模式

    Python設(shè)計模式結(jié)構(gòu)型享元模式

    這篇文章主要介紹了Python享元模式,享元模式即Flyweight Pattern,指運用共享技術(shù)有效地支持大量細粒度的對象,下面和小編一起進入文章了解更多詳細內(nèi)容吧
    2022-02-02
  • numpy.ndarray 交換多維數(shù)組(矩陣)的行/列方法

    numpy.ndarray 交換多維數(shù)組(矩陣)的行/列方法

    今天小編就為大家分享一篇numpy.ndarray 交換多維數(shù)組(矩陣)的行/列方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • Python中的閉包與裝飾器的用法詳解

    Python中的閉包與裝飾器的用法詳解

    這篇文章主要介紹了Python中的閉包與裝飾器的用法詳解,裝飾器本質(zhì)上是一個Python函數(shù),它可以讓其他函數(shù)在不需要做任何代碼變動的前提下增加額外功能,裝飾器的返回值也是一個函數(shù)對象,需要的朋友可以參考下
    2023-07-07
  • python從入門到精通 windows安裝python圖文教程

    python從入門到精通 windows安裝python圖文教程

    這篇文章主要為大家詳細介紹了python從入門到精通,windows安裝python圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • mac系統(tǒng)安裝Python3初體驗

    mac系統(tǒng)安裝Python3初體驗

    這篇文章主要介紹了mac系統(tǒng)安裝Python3初體驗,需要的朋友可以參考下
    2018-01-01
  • pytorch訓(xùn)練神經(jīng)網(wǎng)絡(luò)爆內(nèi)存的解決方案

    pytorch訓(xùn)練神經(jīng)網(wǎng)絡(luò)爆內(nèi)存的解決方案

    這篇文章主要介紹了pytorch訓(xùn)練神經(jīng)網(wǎng)絡(luò)爆內(nèi)存的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python中的循環(huán)語法使用指南

    python中的循環(huán)語法使用指南

    這篇文章主要給大家介紹了關(guān)于python中循環(huán)語法使用的相關(guān)資料, 循環(huán)語句是Python中的一種基本語句,用于重復(fù)執(zhí)行一段代碼。在Python中,循環(huán)語句分為for和while兩種,需要的朋友可以參考下
    2023-08-08
  • Python基于matplotlib畫箱體圖檢驗異常值操作示例【附xls數(shù)據(jù)文件下載】

    Python基于matplotlib畫箱體圖檢驗異常值操作示例【附xls數(shù)據(jù)文件下載】

    這篇文章主要介紹了Python基于matplotlib畫箱體圖檢驗異常值操作,涉及Python針對xls格式數(shù)據(jù)文件的讀取、matplotlib圖形繪制等相關(guān)操作技巧,并附帶xls數(shù)據(jù)文件供讀者下載參考,需要的朋友可以參考下
    2019-01-01
  • pytorch?dataset實戰(zhàn)案例之讀取數(shù)據(jù)集的代碼

    pytorch?dataset實戰(zhàn)案例之讀取數(shù)據(jù)集的代碼

    這篇文章主要介紹了pytorch?dataset實戰(zhàn)案例讀取數(shù)據(jù)集的相關(guān)知識,這段代碼可以作為讀取數(shù)據(jù)集的一個DataSet類的基礎(chǔ)類,可以擴充進行修改,以后有類似需要可以拿過來修改,本文結(jié)合實例代碼給大家詳細講解,需要的朋友可以參考下
    2022-10-10
  • python+selenium 鼠標事件操作方法

    python+selenium 鼠標事件操作方法

    今天小編就為大家分享一篇python+selenium 鼠標事件操作方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08

最新評論

安塞县| 清徐县| 天气| 和平县| 枣阳市| 阳城县| 宝应县| 固始县| 慈利县| 台前县| 梅州市| 汕头市| 临高县| 潮州市| 卢氏县| 凤阳县| 友谊县| 徐州市| 定兴县| 阿合奇县| 中江县| 尼玛县| 松原市| 宜春市| 通榆县| 静乐县| 成都市| 洛宁县| 金平| 望都县| 天柱县| 沾化县| 永靖县| 紫阳县| 福鼎市| 孟连| 社会| 仙桃市| 隆德县| 青神县| 青龙|