開發者們大家好,
感知器是機器學習中最簡單、最基本的概念之一。它是構成神經網路基礎的二元線性分類器。在這篇文章中,我將逐步介紹使用 Python 從頭開始理解和實現感知器的步驟。
讓我們開始吧!
A 感知器 是二元分類器監督學習的基本演算法。給定輸入特徵,感知器學習權重,幫助基於簡單的閾值函數分離類別。簡單來說它的運作原理如下:
從數學上來說,它看起來像這樣:
f(x) = w1*x1 w2*x2 ... wn*xn b
地點:
如果 f(x) 大於或等於閾值,則輸出為類別 1;否則,它是 0 類。
這裡我們將只使用 NumPy 進行矩陣運算,以保持輕量級。
import numpy as np
我們將把感知器建構成一個類,以保持一切井井有條。該課程將包括訓練和預測的方法。
class Perceptron: def __init__(self, learning_rate=0.01, epochs=1000): self.learning_rate = learning_rate self.epochs = epochs self.weights = None self.bias = None def fit(self, X, y): # Number of samples and features n_samples, n_features = X.shape # Initialize weights and bias self.weights = np.zeros(n_features) self.bias = 0 # Training for _ in range(self.epochs): for idx, x_i in enumerate(X): # Calculate linear output linear_output = np.dot(x_i, self.weights) + self.bias # Apply step function y_predicted = self._step_function(linear_output) # Update weights and bias if there is a misclassification if y[idx] != y_predicted: update = self.learning_rate * (y[idx] - y_predicted) self.weights += update * x_i self.bias += update def predict(self, X): # Calculate linear output and apply step function linear_output = np.dot(X, self.weights) + self.bias y_predicted = self._step_function(linear_output) return y_predicted def _step_function(self, x): return np.where(x >= 0, 1, 0)
在上面的程式碼中:
我們將使用一個小資料集來輕鬆視覺化輸出。這是一個簡單的與閘資料集:
# AND gate dataset X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]]) y = np.array([0, 0, 0, 1]) # Labels for AND gate
現在,讓我們訓練感知器並測試它的預測。
# Initialize Perceptron p = Perceptron(learning_rate=0.1, epochs=10) # Train the model p.fit(X, y) # Test the model print("Predictions:", p.predict(X))
與閘的預期輸出:
import numpy as np
這使得感知器僅更新錯誤分類的點,逐漸推動模型更接近正確的決策邊界。
訓練後可視化決策邊界。如果您正在處理更複雜的資料集,這尤其有用。現在,我們將使用 AND 閘讓事情變得簡單。
雖然感知器僅限於線性可分離問題,但它是多層感知器 (MLP) 等更複雜神經網路的基礎。透過 MLP,我們加入隱藏層和激活函數(如 ReLU 或 Sigmoid)來解決非線性問題。
感知器是一種簡單但基礎的機器學習演算法。透過了解它的工作原理並從頭開始實施它,我們深入了解機器學習和神經網路的基礎知識。感知器的美妙之處在於它的簡單性,使其成為任何對人工智慧感興趣的人的完美起點。
以上是用 Python 從頭開始實作感知器的詳細內容。更多資訊請關注PHP中文網其他相關文章!