转:sklearn的Expected 2D array, got 1D array instead: 和reshape函数

报错内容如下(忽略array数据):

  1. ValueError: Expected 2D array, got 1D array instead:
  2. array=[ 4742.92 3398. 2491.9 2149. 2070. ].
  3. Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1)
  4. if it contains a single sample.

这是在git上面看到的一个国际友人的解答。

 

原文,如下:

I think you're using a new scikit-learn version and it's throwing an error because in the new version everything has to be a 2d matrix, even a single column or row.
新版本中所有东西都必须是一个2D矩阵,即使是一个简单的column或row)

It even says: Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

(使用array.reshape(-1, 1)重新调整你的数据)

 

原错误代码:

data['标准化累计票房'] = scaler.fit_transform(data['累计票房'])

修改后:

data['标准化累计票房'] = scaler.fit_transform(data['累计票房'].reshape(-1,1))

如果是python3这里可能会出现警告:FutureWarning。因为reshape方法在后续会取消,所以改用values.reshape(-1,1)

data['标准化累计票房'] = scaler.fit_transform(data['累计票房'].values.reshape(-1,1))

关于reshape函数:

numpy中一个调整矩阵行数、列数、维度数的一个函数。

知乎用户cuicuicui实例:

c = np.array([[1,2,3],[4,5,6]])

输出:

[[1 2 3]
[4 5 6]]

我们看看不同的reshape

  1. print '改成2行3列:'
  2. print c.reshape(2,3)
  3. print '改成3行2列:'
  4. print c.reshape(3,2)
  5. print '我也不知道几行,反正是1列:'
  6. print c.reshape(-1,1)
  7. print '我也不知道几列,反正是1行:'
  8. print c.reshape(1,-1)
  9. print '不分行列,改成1串'
  10. print c.reshape(-1)

输出为:

改成2行3列:
[[1 2 3]
[4 5 6]]
改成3行2列:
[[1 2]
[3 4]
[5 6]]
我也不知道几行,反正是1列:
[[1]
[2]
[3]
[4]
[5]
[6]]
我也不知道几列,反正是1行:
[[1 2 3 4 5 6]]
不分行列,改成1串
[1 2 3 4 5 6]



作者:cuicuicui
链接:https://www.zhihu.com/question/52684594/answer/297441394
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
cuicuicui
posted @ 2019-01-18 17:54  神不咙哚儿  阅读(3872)  评论(0编辑  收藏  举报