感知機演算法(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...