PLA程序陷入死循环

发布于 2022-09-05 08:59:40 字数 1300 浏览 11 评论 0

数据的输入空间是一个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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文