import numpy as np
def Train(X_train, Y_train):
#获取维度参数
m, n = np.shape(X_train)
#初始化w,b
w = np.zeros((n, 1))
b = 0
while True:
count = m #统计修改次数,若没有变化,则退出while语句
for i in range(m):
result = Y_train[i]*(np.dot(X_train[i], w) + b)
if result <= 0: #计算yi(w*xi+b)
count -= 1
#更新w,b
for j in range(n):
w[j] = w[j] + Y_train[i]*X_train[i][j]
b = b + Y_train[i]
print("w:(",w,")","b:",b)
break
if count== m:
break
return w,b
def main():
X_train = np.array(([3, 3], [4,3], [1,1]))
Y_train = np.array(([1,1,-1]))
print(Train(X_train, Y_train))
if __name__ == '__main__':
main()