《统计学习方法》-感知机-例2.2

    xiaoxiao2022-06-27  158

    import numpy as np x = np.array([[3,3],[4,3],[1,1]]) y = np.array([1,1,-1]) alfa = np.zeros(3) alfa array([0., 0., 0.]) w = np.array([0.,0.]) b = 0 lr = 1 # for i in range(len(y)): # w += alfa[i] * y[i] * x[i] def foo(alfa,y,w): for i in range(len(y)): w += alfa[i] * y[i] * x[i] # print(w) return w w = foo(alfa,y,w) w array([0., 0.]) count =20 tag = 0 print('alfa={},b={}'.format(alfa,b)) while count > 1: tag += 1 print('第{}次迭代'.format(tag)) w = np.array([0.,0.]) # print('w={},b={}'.format(w,b)) w = foo(alfa,y,w) print('w={},b={}'.format(w,b)) count -= 1 for i in range(len(y)): print(i) if y[i]*(w.dot(x[i]) + b) <= 0: alfa[i] += 1 b += y[i] print('error classify: '+str(i)) print('alfa={},b={}'.format(alfa,b)) break alfa=[0. 0. 0.],b=0 第1次迭代 w=[0. 0.],b=0 0 error classify: 0 alfa=[1. 0. 0.],b=1 第2次迭代 w=[3. 3.],b=1 0 1 2 error classify: 2 alfa=[1. 0. 1.],b=0 第3次迭代 w=[2. 2.],b=0 0 1 2 error classify: 2 alfa=[1. 0. 2.],b=-1 第4次迭代 w=[1. 1.],b=-1 0 1 2 error classify: 2 alfa=[1. 0. 3.],b=-2 第5次迭代 w=[0. 0.],b=-2 0 error classify: 0 alfa=[2. 0. 3.],b=-1 第6次迭代 w=[3. 3.],b=-1 0 1 2 error classify: 2 alfa=[2. 0. 4.],b=-2 第7次迭代 w=[2. 2.],b=-2 0 1 2 error classify: 2 alfa=[2. 0. 5.],b=-3 第8次迭代 w=[1. 1.],b=-3 0 1 2 第9次迭代 w=[1. 1.],b=-3 0 1 2 第10次迭代 w=[1. 1.],b=-3 0 1 2 第11次迭代 w=[1. 1.],b=-3 0 1 2 第12次迭代 w=[1. 1.],b=-3 0 1 2 第13次迭代 w=[1. 1.],b=-3 0 1 2 第14次迭代 w=[1. 1.],b=-3 0 1 2 第15次迭代 w=[1. 1.],b=-3 0 1 2 第16次迭代 w=[1. 1.],b=-3 0 1 2 第17次迭代 w=[1. 1.],b=-3 0 1 2 第18次迭代 w=[1. 1.],b=-3 0 1 2 第19次迭代 w=[1. 1.],b=-3 0 1 2

    最新回复(0)