感知機模型簡介與Python實現

2021-10-06 18:50:08 字數 2675 閱讀 2779

感知機是乙個線性二分類模型,該模型是svm和神經網路的基礎。假設輸入空間為x特徵向量,輸出空間為y=,從輸入空間到輸出空間函式可以表示為:

f (x

)=si

gn(w

t+b)

f(x)=sign(w^t+b)

f(x)=s

ign(

wt+b

)對於分類錯誤的點(xe

,ye)

(x_e,y_e)

(xe​,y

e​)有:

− ye

(wtx

e+b)

>

0-y_e(w^tx_e+b)>0

−ye​(w

txe​

+b)>

0該點到分割平面的距離可以表示為:

1 ∣∣

∣w∣∣

ye(w

txe+

b)\fracy_e(w^tx_e+b)

∣∣∣w∣∣

1​ye

​(wt

xe​+

b)將所有判斷錯誤的點到分割面距離和作為損失函式:

1 ∣∣

∣w∣∣

∑i=0

kyi(

wtxi

+b)\frac\sum_^ky_i(w^tx_i+b)

∣∣∣w∣∣

1​i=

0∑k​

yi​(

wtxi

​+b)

上述損失函式可以採用梯度下降法進行求解。

import numpy as np

import matplotlib.pyplot as plt

defgradientmethod

(errorlist,w_t,b_t,traing)

: b_t=b_t+traing*

(errorlist[1]

)for k in

range

(x_range)

: w_t[k]

=w_t[k]

+traing*

((errorlist[0]

[k]*errorlist[1]

))return w_t,b_t

defmain

(trainnum,test,x_range,w,b,trainingrat)

:for z in

range

(trainnum)

:for i in test:

y_test=

0 sum_test=

0for j in

range

(x_range)

: sum_test+=i[0]

[j]*w[j,0]

y_test=sum_test+b

if y_test*i[1]

<=0:

w,b=gradientmethod(i,w,b,trainingrat)

return w,b

if __name__==

"__main__"

:#測試資料

test=[[

(3,3

),1]

,[(4

,3,)

,1],

[(1,

1,),

-1]]

x_range=

len(test[0]

[0])

# 初始化

w=np.zeros(

(x_range,1)

) b=

0 trainingrat=

1 trainnum=

int(

input

("輸入迭代次數"))

w,b=main(trainnum,test,x_range,w,b,trainingrat)

#結果視覺化

內容參考了《統計學習方法》

感知機 模型與策略

看到模型和策略,應該很快聯想到了李航的 統計學習方法 統計學習方法的三要素定義為 模型 策略 演算法。感知機是二分類的線性分類模型,輸入為例項的特徵向量,輸出為例項的類別 取 1和 1 感知機對應於輸入空間中將例項劃分為兩類的分離超平面。感知機旨在求出該超平面,為求得超平面匯入了基於誤分類的損失函式...

感知機模型

這裡介紹機器學習中最簡單的一種分類方法 感知機模型。感知機模型 其中sign是符號函式,w和b是引數,x是輸入特徵向量,f x 返回決策結果。分離超平面s 對於二類線性可分問題,分離超平面將兩類樣本分在s兩側。空間中一點x0到s的距離 損失函式 定義損失函式的意義是所有誤分類的點到分離超平面的距離之...

感知機模型

參考 感知機模型是理解svm和神經網路的基礎。在這裡我們可以從感知機模型上看到神經網路的影子,通過簡單的堆疊就可以成為mlp 神經網路的一種 在損失函式上看到svm的影子。那到底什麼是感知機呢?定義 在機器學習中,感知機 perceptron 是二分類的線性分類模型,屬於監督學習演算法。輸入為例項的...