尽管经过多次调试,该数组似乎是一个二维数组,但我还是收到了这个错误:
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()返回一个一维数组。为什么会发生这样的事情?谢谢
发布于 2018-07-03 18:23:27
X数组是二维数组。正如您正确地说过,getheuristics()返回一个一维数组,追加一个一维数组将生成一个二维数组。但是,由于Y仅为1D,因此将显示错误"Expected 2D array,got 1D array got“。毕竟,您每次只需追加一个数字,因此是一个一维数组。Scikit-learn的fit需要两个2D数组。正如我相信控制台会建议的那样,你可能想试一下:
Y= Y.reshape(-1,1)
在你调用reg.fit(X,Y)之前。
https://stackoverflow.com/questions/49698418
复制相似问题