PLA程序陷入死循环
数据的输入空间是一个400 * 4
的矩阵,结果是400 * 1
的矩阵。
源码如下:
import numpy as np
def createDataSet (filename):
dataSet = open(filename,'r')
dataSet = dataSet.readlines()
num = len(dataSet)
x = np.zeros((num,4)) # x是num * 4的矩阵
y = np.zeros((num,1)) # y 是 num * 1的矩阵
for i in range(num):
data = dataSet[i].split()
x[i,0] = np.float(data[0])
x[i,1] = np.float(data[1])
x[i,2] = np.float(data[2])
x[i,3] = np.float(data[3])
y[i,0] = np.float(data[-1])
return x,y
def sign (number):
num = len(number) # 400
sign_ = np.zeros((num,1))
for i in range(len(number)):
if number[i] > 0:
sign_[i] = 1
else:
sign_[i] = -1
return sign_
def PLA (x,y):
w = np.zeros((4,1))
iterations = 0
num = len(x)
flag = True
while(True):
flag = True
y_new = sign(np.dot(x, w))
for i in range(num):
if y_new[i] != y[i]:
w = w + (y[i] * x[i]).reshape((4,1))
flag = False
else:
continue
if(not flag):
iterations += 1
else:
break
return iterations,w
希望大佬帮忙看一下哪里有错误,谢谢~~
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论