使用 Python 实现感知机算法,输入样本集 (X=[1,2],[2,1],[2,3],[1,一1]),标 签(y=[1,-1,1,-1])。要求: 1. 实现感知机的训练过程。 2. 输出训练过程中的每一次权重和偏置的更新情况。 3. 最终输出训练后的权重和偏置。
时间: 2024-09-26 10:16:18 浏览: 29
在Python中实现感知机算法可以使用numpy库来进行数值计算。以下是简单的实现步骤:
```python
import numpy as np
class Perceptron:
def __init__(self, learning_rate=1):
self.weights = np.zeros(2) # 初始化权重为零向量
self.bias = 0 # 初始化偏置为0
self.learning_rate = learning_rate
def predict(self, x):
return np.sign(np.dot(x, self.weights) + self.bias)
def train(self, X, y, max_iterations=1000):
for i in range(max_iterations):
for j, (x, label) in enumerate(zip(X, y)):
prediction = self.predict(x)
if prediction != label:
self.weights += self.learning_rate * label * x
self.bias += self.learning_rate * label
print(f"Final weights after {max_iterations} iterations: {self.weights}")
print(f"Final bias after {max_iterations} iterations: {self.bias}")
# 示例数据
X = np.array([[1, 2], [2, 1], [2, 3], [1, -1]])
y = np.array([1, -1, 1, -1])
perceptron = Perceptron()
perceptron.train(X, y)
```
这个代码首先定义了一个Perceptron类,包含了初始化权重和偏置,以及预测和训练方法。训练过程中,它会遍历所有样本,如果预测结果和真实标签不符,就根据感知机的学习规则更新权重和偏置。最后输出训练结束时的权重和偏置。
运行此代码后,你会看到每轮迭代后的权重和偏置的变化,直到达到最大迭代次数(默认1000次)。注意,这只是一个基本的实现,真实的感知机算法在遇到所有样本都正确分类后就会提前停止,而这里的代码没有包含这种机制。
阅读全文