这里关于BP算法就不详细说明了,直接上代码:
import numpy as np
import matplotlib.pyplot as plt
n = 0 # 迭代次数
lr = 0.11 # 学习速率
# 输入数据分别是:偏置值、x1、x2、x1^2、x1*x2、x2^2
X = np.array([[1, 0, 0, 0, 0, 0], [1, 0, 1, 0, 0, 1], [1, 1, 0, 1, 0, 0], [1, 1, 1, 1, 1, 1]])
# 标签
Y = np.array([-1, 1, 1, -1])
# 权重初始化,取值范围为-1~1
W = (np.random.random(X.shape[1]) - 0.5) * 2
print('初始化权值:', W)
def get_show(): # 绘图函数
# 正样本
x1 = [0, 1]
y1 = [1, 0]
# 负样本
x2 = [0, 1]
y2 = [0, 1]
# 生成x刻度
x_data = np.linspace(-1, 2)
plt.figure()
# 画出两条分界线
plt.plot(x_data, get_line(x_data, 1), 'r')
plt.plot(x_data, get_line(x_data, 2), 'r')
# 原始数据
plt.plot(x1, y1, 'bo')
plt.pl