機器學習演算法 感知機

2021-08-29 01:16:47 字數 2665 閱讀 9988

今天把感知機的演算法用python實現了一下。

主要依據的演算法流程是《統計學習方法》中關於感知機的演算法過程,具體如下。

隨機生成訓練資料,測試資料也可同樣方法生成

m:樣本的個數

n:每個樣本具有的特徵維數

y: ±1

'''x = np.random.random(

(m,n)

)#x2 = np.random.random((m,n))

y1 = np.ones(m)

#y2 = np.ones(m)*(-1)

start =

int(m /2)

y1 [start:

]= y1[start:]*

(-1)

return x, y1

defjudge_func

(self, x, y, w, b)

:'''

來判斷是否對引數進行更新的函式

x: xi

y: yi

w: wi

b: bi

'''value = y *

(np.dot(w, x)

+ b)

#print(value)

return value

defmlp_train

(self, x, y, w, b, yita)

:'''

感知機x: 輸入資料矩陣

y:輸入標籤矩陣

'''error_sample =

error_label =

for i in

range

(len

(x))

:if self.judge_func(x[i]

, y[i]

, w, b)

<=0:

w = w + yita * y[i]

*x[i]

b = b + yita * y[i]))

iflen

(error_sample)

>0:

self.mlp_train(error_sample,error_label, w, b, yita)

return w, b

deftest

(self, x_test, w, b)

: y_pre =

for i in

range

(len

(x_test)):

value = np.dot(w, x_test[i]

.t)+ b

y_temp = np.sign(value)

return y_pre

defcal_accuracy

(self, y_pre, y_test)

: num =

0for i in

range

(len

(y_pre)):

if y_pre[i]

== y_test[i]

: num +=

1 accuracy = num /

len(y_test)

return accuracy

if __name__ ==

'__main__'

: m, n =

1000,3

#輸入生成樣本的數量和維度

train = mlp(

) x_train, y_train = train.generate_data(m, n)

#m, n = np.shape(x)

#print(y_train.shape)

#print((np.transpose(x_train[1])).shape)

w = np.zeros((1

, n)

) b =

0 yita =

0.1 w, b = train.mlp_train(x_train, y_train,w,b,yita)

x_test, y_test = train.generate_data(m, n)

y_pre = train.test(x_test, w, b)

print

('感知機的準確率為: '

, train.cal_accuracy(y_pre, y_test)

)在實現的過程中其實有很長的時間在糾結關於引數w和b的維數的問題,因為不太清楚怎麼確定。

後來想明白了,w的維數應該和每乙個樣本的維度是一樣的,這樣才能保證樣本的在每乙個特徵上都有乙個權重引數,而最終的目標也是對這些權重引數擬合,其實有點像多項式的係數。

機器學習 感知機演算法

感知機 perception 是一種二類線性模型,主要用於分類問題。目標函式 f x sgn w x b 其中sgn為符號函式 其中向量w為目標函式向量,向量x為樣本。向量w 向量x 超平面 w x b 0 所構成的平面 向量w為超平面上的法向量。訓練集 t x1,y1 x2,y2 x3,y3 xn...

機器學習 感知機

感知機是一種簡單的二類分類的線性分類模型,用於處理可以線性可分的二分類問題。感知機對應於輸入空間 特徵空間 中將例項劃分為正負兩類的分離超平面,屬於判別模型。模型。從輸入空間到輸出空間有如下函式 f x s ign wtx b 其中w 為權值,b為偏執。生成的超平面為 wt x b 0 其中w 為超...

機器學習 感知機

r nx rn 輸出空間為y 輸入x x x x表示例項的特徵向量,對應於輸入空間的點 輸出y y表示示例的類別。由輸入空間到輸出空間的函式為 x si gn w x b f x sign w x b x w x表示w和x的點積i 1mwi xi w 1x1 w2x2 wnx n i 1mwixi ...