感知机学习算法的Python实现
training_set = [[(3, 3), 1], [(4, 3), 1], [(1, 1), -1]]
w = [0, 0]
b = 0
def cal_y(x):
global w, b
length = len(w)
y = b
for i in range(length):
y = y + w[i] * x[0][i]
return y
def check(x):
global w, b
l = cal_y(x) * x[1]
if l >= 0:
return True
else:
return False
def update(x):
global w, b
length = len(w)
for i in range(length):
w[i] = w[i] + x[1] * x[0][i]
b = b + x[1]
def main():
update(training_set[0])
flag = True
while flag:
count = 0
for i in training_set:
if not check(i):
update(i)
count = 1
break
if count == 0:
flag = False
for j in w:
print(j)
print('\n')
print(b)
if __name__ == '__main__':
main()