感知器算法python
时间: 2023-10-06 16:08:30 浏览: 143
感知器算法是一种二分类的线性分类算法,它的基本思想是通过对输入特征进行加权求和,然后通过一个阈值函数将结果映射到一个二元输出。它在机器学习领域有着重要的地位,是神经网络的基础模型之一。
下面是一个简单的感知器算法的Python实现:
```
import numpy as np
class Perceptron:
def __init__(self, learning_rate=0.1, n_iterations=100):
self.learning_rate = learning_rate
self.n_iterations = n_iterations
def fit(self, X, y):
n_samples, n_features = X.shape
self.weights = np.zeros(n_features)
self.bias = 0
# 训练感知器
for _ in range(self.n_iterations):
for i in range(n_samples):
# 计算输出
linear_output = np.dot(X[i], self.weights) + self.bias
y_predicted = self.activation(linear_output)
# 更新权重和偏差
update = self.learning_rate * (y[i] - y_predicted)
self.weights += update * X[i]
self.bias += update
def predict(self, X):
# 预测输出
linear_output = np.dot(X, self.weights) + self.bias
y_predicted = self.activation(linear_output)
return y_predicted
def activation(self, x):
# 阶跃函数
return np.where(x >= 0, 1, 0)
```
这里我们使用了NumPy库来进行向量化计算,提高了效率。在训练感知器时,我们使用了随机梯度下降算法来更新权重和偏差。在预测时,我们使用了阶跃函数作为激活函数。使用该类的示例如下:
```
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
y = np.array([0, 0, 0, 1])
model = Perceptron()
model.fit(X, y)
print(model.predict(X))
```
输出结果为:[0 0 0 1],说明感知器算法能够正确地进行二分类任务。
阅读全文