感知機演算法python實現

2022-09-20 05:54:15 字數 2636 閱讀 2346

感知機演算法(perceptron learning algorithm)是乙個很容易實現的演算法。本文對pla 演算法做了乙個簡單的實驗,在資料集線性可分時,可以證明pla演算法最終會收斂。

首先隨機生成資料點,然後隨機生成目標函式 \(f\) 的權重 \(weights\)。

def generate_data(num_of_data, num_of_features):

"""generate random data and weight vector.

keyword arguments:

num_of_data -- the number of datapoints

num_of_features -- the number of features

returns:

x - the features of datapoints

y - the labels of datapoints

weights - random weights

"""x = np.ones((num_of_data, num_of_features + 1))

# generate random features

x[:, 1:] = np.random.randint(-1000, 1000, (num_of_data, num_of_features))

weights = np.random.randint(-1000, 1000, num_of_features + 1)

weights = weights.reshape(-1, 1)

print(weights.shape)

y = np.dot(x, weights)

y[y>=0] = 1

y[y<0] = -1

return x, y, weights

pla 演算法的更新規則是:迴圈檢測資料點是否能夠被正確分類,如果分類錯誤,則: \(\boldsymbol_=\boldsymbol_t+y_\boldsymbol(t)\),其中\((\boldsymbol_t, y_)\)是被分類錯誤的資料點。

python實現感知機

import numpy as np 定義啟用函式 def acti fun x return 1 if x 0 else 0 建立感知器類 class perception object 初始化權重 def init self self.weights 0 self.bias 1 定義訓練函式,包...

python實現AND感知機

and感知機通過訓練後,可以進行邏輯 與 的運算。例如 當輸入 1,1時,輸出為1 輸入1,0時,輸出為0。通過上圖,我們可以發現 0,0 0,1 1,0 這三個點數表示輸出為0,而點 1,1 表示輸出為1,所以我們可以近似找到一條直線將輸出為0的點與輸出為1的點分隔開。我們可以通過不斷訓練係數 即...

感知機python實現

有用請點贊,沒用請差評。感知機原理參考部落格 演算法引用李航博士 統計學習方法 p29.感知機 import numpy as np import matplotlib.pyplot as plt class perceptron object def init self,eta 1,iter 50...