预期的2D阵列,取而代之的是1D阵列

时间:2018-04-06 17:46:26

标签: python arrays python-3.x numpy scipy

我收到此错误,即使经过多次调试,数组似乎是一个2D数组:

    reg = linear_model.SGDClassifier()
    X = []
    Y = []
    with open('data/legitimate.txt', 'r', encoding='utf8') as f:
        for line in f:
            X.append(get_heuristics(line))
            Y.append(0)

    with open('data/bad.txt', 'r', encoding='utf8') as f:
        for line in f:
            X.append(get_heuristics(line))
            Y.append(1)

    X = np.array(X)
    Y = np.array(Y)
    reg.fit(X, Y)

get_heuristics()返回1D数组的位置。有什么理由可以发生这种情况?感谢

1 个答案:

答案 0 :(得分:0)

X数组是2D数组。正确地说,getheuristics()返回一个1D数组,附加一个1D数组将构成一个2D数组。但是,由于Y仅是1D,将显示错误“期望的2D数组,改为有1D数组”。毕竟,您每次只是简单地附加一个数字,因此是一维数组。 Scikit-learn的fit需要两个2D数组。我确定控制台会建议您执行以下操作:

Y = Y.reshape(-1,1)

在致电reg.fit(X,Y)之前。