实现人工神经网络单层感知器学习算法
时间: 2023-06-29 10:09:53 浏览: 113
单层感知器(Perceptron)是一种二元分类器,可以用于解决一些简单的线性可分问题。其学习算法如下:
1. 初始化权重向量 w 和偏置 b 为 0。
2. 对于每一个训练样本 (x, y),执行以下步骤:
a. 计算预测输出值 y_hat = sign(w·x + b),其中 sign 表示符号函数,若 y_hat 大于等于 0,则输出 1,否则输出 -1。
b. 更新权重向量 w 和偏置 b:
w = w + α(y - y_hat)x
b = b + α(y - y_hat)
其中 α 为学习率,通常取值为 0.01 至 0.1。
3. 重复步骤 2 直到所有样本都被正确分类或达到最大迭代次数。
4. 输出权重向量 w 和偏置 b。
该算法的实现可以使用 Python 语言,代码如下:
```python
import numpy as np
class Perceptron:
def __init__(self, learning_rate=0.01, max_iter=1000):
self.learning_rate = learning_rate
self.max_iter = max_iter
def fit(self, X, y):
n_samples, n_features = X.shape
self.weights = np.zeros(n_features)
self.bias = 0
for i in range(self.max_iter):
for j in range(n_samples):
y_hat = np.sign(np.dot(X[j], self.weights) + self.bias)
if y_hat != y[j]:
self.weights += self.learning_rate * y[j] * X[j]
self.bias += self.learning_rate * y[j]
def predict(self, X):
return np.sign(np.dot(X, self.weights) + self.bias)
```
其中,fit 方法用于训练模型,接受训练数据 X 和标签 y,predict 方法用于测试模型,接受测试数据 X,返回预测结果。
阅读全文