1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| import numpy as np
# ------------------------- # 训练数据 # ------------------------- X = np.array([ [1, 1, 1], # 晴天 周末 身体好 -> 骑车 [1, 0, 1], # 晴天 工作日 身体好 -> 骑车 [0, 1, 1], # 下雨 周末 身体好 -> 不骑 [0, 0, 1], # 下雨 工作日 身体好 -> 不骑 [1, 1, 0], # 晴天 周末 身体不好 -> 不骑 ])
y = np.array([1, 1, 0, 0, 0])
# ------------------------- # 初始化权重 # ------------------------- w = np.zeros(3)
# 偏置 b = 0
# 学习率 lr = 0.2
# ------------------------- # 开始训练 # ------------------------- for epoch in range(20):
for x, target in zip(X, y):
s = np.dot(x, w) + b
pred = 1 if s >= 0 else 0
error = target - pred
# 更新权重 w += lr * error * x
# 更新偏置 b += lr * error
print("训练后的权重:", w) print("训练后的偏置:", b)
|