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

希望大佬帮忙看一下哪里有错误,谢谢~~

阅读 1.5k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题