機器學習 手寫感知機模型

2021-10-06 05:35:27 字數 2221 閱讀 6924

資料集來自mnist資料集,主要利用numpy裡的matrix矩陣計算。演算法的實現主要在於對引數w和b的求解。演算法的推導過程參考李航《統計學習方法》,推導最優化函式然後更新引數的過程。

import numpy as np

import pandas as pd

import time

defdata_load

(filename)

:'''

:param filename:

:return: dataarr,labelarr

'''print

('start read file'

) dataarr,labelarr =

,with

open

(filename,

'r')

as f:

lines = f.readlines(

)for line in lines:

line = line.strip(

).split(

',')

ifint

(line[0]

)>=5:

1)else:-

1)[int

(num)

/255

for num in line[1:

]])print

('end'

)return dataarr,labelarr

defperception

(dataarr,labelarr,

iter=50

,lr=

0.001):

datamat = np.mat(dataarr)

m,n = datamat.shape

labelmat = np.mat(labelarr)

.t w = np.zeros((1

,n))

b =0# loss = 0

for k in

range

(iter):

loss =

0for i in

range

(len

(dataarr)):

x_i = datamat[i]

y_i = labelmat[i]

if y_i *

(w * x_i.t + b)

<=0:

w = w + lr * y_i * x_i

b = b + lr * y_i

new_y = w * x_i.t + b

loss +=

abs(new_y - y_i)

print

('iter:{}'

.format

(k))

return w,b

defdata_test

(dataarr,labelarr,w,b)

: datamat = np.mat(dataarr)

labelmat = np.mat(labelarr)

.t sum

=len

(dataarr)

rigsum =

0for i in

range

(len

(dataarr)):

x_i = datamat[i]

y_i = labelmat[i]

result =-1

* y_i *

(w * x_i.t + b)

if result <=0:

rigsum +=

1return rigsum/

sum*

100if __name__ ==

'__main__'

: dataarr, labelarr = data_load(

'../dataset/mnist_train.csv'

) start = time.time(

) w,b = perception(dataarr,labelarr)

end = time.time(

)print

(data_test(dataarr,labelarr,w,b)

)print

(end - start)

機器學習 感知機模型

感知機模型,主要的思想是用乙個函式,通過不斷的調節權值和偏置的數值,將乙個線性可分的集合分類 感知機演算法 fx sign w x b sign 1 x 0,1 x 0 對於最優的w,b的值,採用了損失函式 l w,b sum xi 屬於 m yi w xi b m 為錯誤分類點的集合 感知機學習演...

機器學習 感知機模型

目錄感知機 perceptron 是二類分類的線性分類模型,其輸入為例項的特徵向量,輸出為例項的類別,取 1 和 1 二值.感知機對應於輸入空間 特徵空間 中將例項劃分為正負兩類的分離超平面,屬於判別模型.感知機學習旨在求出將訓練資料進行線性劃分的分離超平面,為此匯入基於誤分類的損失函式,利用梯度下...

機器學習筆記 感知機模型

knn演算法matlab實現 感知機模型 感知機介紹 感知機 假設輸入空間 特徵空間 是 chi subseteq r n 輸出空間是 y 輸入 x in chi 表示例項的特徵向量,對應於輸入空間 特徵空間 的點 輸出 y in gamma 表示例項的類別 由輸入空間到輸出空間的函式 f x si...