实现感知机绘制超平面的python代码
时间: 2023-10-10 09:07:57 浏览: 268
以下是Python实现感知机绘制超平面的代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 定义感知机分类函数
def perceptron(x, w, b):
y = np.dot(w, x) + b
output = 1 if y > 0 else -1
return output
# 定义绘制超平面的函数
def plot_hyperplane(w, b):
x1 = -0.5
y1 = -(b + w[0] * x1) / w[1]
x2 = 1.5
y2 = -(b + w[0] * x2) / w[1]
plt.plot([x1, x2], [y1, y2], 'r')
# 随机生成数据集
X = np.array([[2, 2], [2, 3], [3, 1], [5, 2], [5, 4], [6, 3]])
Y = np.array([1, 1, -1, -1, -1, 1])
# 初始化权重和偏置
w = np.zeros(len(X[0]))
b = 0
# 设置学习率和迭代次数
lr = 1
epochs = 10
# 迭代更新权重和偏置
for epoch in range(epochs):
for i in range(len(X)):
if Y[i] * perceptron(X[i], w, b) <= 0:
w += lr * Y[i] * X[i]
b += lr * Y[i]
# 绘制数据点和超平面
plt.scatter(X[:, 0], X[:, 1], c=Y)
plot_hyperplane(w, b)
plt.show()
```
以上代码会随机生成一个二维数据集,并使用感知机算法训练得到分类超平面,最后绘制出数据点和超平面的图形。
阅读全文