感知器的三种算法用python实现
时间: 2023-11-18 17:29:30 浏览: 39
以下是三种感知器算法的 Python 实现:
1. Rosenblatt 感知器算法
```python
import numpy as np
class RosenblattPerceptron:
def __init__(self, n_features, learning_rate=0.1, max_iterations=100):
self.n_features = n_features
self.learning_rate = learning_rate
self.max_iterations = max_iterations
self.weights = np.zeros(self.n_features + 1)
def predict(self, X):
z = np.dot(X, self.weights[1:]) + self.weights[0]
return np.where(z > 0, 1, -1)
def train(self, X, y):
for _ in range(self.max_iterations):
for xi, yi in zip(X, y):
error = yi - self.predict(xi)
self.weights[1:] += self.learning_rate * error * xi
self.weights[0] += self.learning_rate * error
```
2. Delta 规则感知器算法
```python
import numpy as np
class DeltaPerceptron:
def __init__(self, n_features, learning_rate=0.1, max_iterations=100):
self.n_features = n_features
self.learning_rate = learning_rate
self.max_iterations = max_iterations
self.weights = np.zeros(self.n_features + 1)
def predict(self, X):
z = np.dot(X, self.weights[1:]) + self.weights[0]
return np.where(z > 0, 1, -1)
def train(self, X, y):
for _ in range(self.max_iterations):
for xi, yi in zip(X, y):
error = yi - self.predict(xi)
self.weights[1:] += self.learning_rate * error * xi
self.weights[0] += self.learning_rate * error
```
3. Widrow-Hoff 感知器算法
```python
import numpy as np
class WidrowHoffPerceptron:
def __init__(self, n_features, learning_rate=0.1, max_iterations=100):
self.n_features = n_features
self.learning_rate = learning_rate
self.max_iterations = max_iterations
self.weights = np.zeros(self.n_features + 1)
def predict(self, X):
z = np.dot(X, self.weights[1:]) + self.weights[0]
return np.where(z > 0, 1, -1)
def train(self, X, y):
for _ in range(self.max_iterations):
for xi, yi in zip(X, y):
error = yi - self.predict(xi)
self.weights[1:] += self.learning_rate * error * xi
self.weights[0] += self.learning_rate * error * 1
```
以上代码仅供参考,实际应用中还需要进行调参和优化。