image.png
# 線性感知器
import numpy as np;
# 數(shù)據(jù)點(diǎn)x1,x2,分類y,y的取值:法線方向?yàn)?拜银,另一面為-1
train = np.array([(2, 2, -1), (3, 2, -1), (1, 2, -1), (4, 3, 1), (3, 4, 1), (5, 3, 1), (2, 4, 1)]);
# 學(xué)習(xí)速率
speed = 0.1;
# f(x)=k1*x1+k2*x2+b;
k1 = 0;
k2 = 0;
b = 0;
def dis(x1, x2, y, w1, w2, b):
dist = w1 * x1 + w2 * x2 + b;
return y * dist;
while (1):
i = 0;
for data in train:
if (dis(data[0], data[1], data[2], k1, k2, b) <= 0):
k1 = k1 + speed * data[2] * data[0];
k2 = k2 + speed * data[2] * data[1];
b = b + speed * data[2];
print(k1, k2, b)
continue;
i = i + 1
if i == 6:
break;
i = 0
print("--------end----------")
print(k1, k2, b);
不如