【问题标题】:Expected 2D array, got 1D array预期二维数组,得到一维数组
【发布时间】:2019-08-17 10:59:15
【问题描述】:

我正在从 github 运行以下代码,但出现错误。怎么了?

https://github.com/susanli2016/Machine-Learning-with-Python/blob/master/Time%20Series%20ANN%20%26%20LSTM%20VIX.ipynb

单元格:

# scale train and test data to [-1, 1]
scaler = MinMaxScaler(feature_range=(-1, 1))
train_sc = scaler.fit_transform(train)
test_sc = scaler.transform(test)

错误:

ValueError: Expected 2D array, got 1D array instead:
array=[17.24     18.190001 19.219999 ... 10.47     10.18     11.04    ].
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.

【问题讨论】:

  • 尽量让你的数据按正确的顺序排列。
  • 什么是trainpd.Series? np.array?如果是系列,请使用.to_frame()。如果是 np 数组,请按照建议.reshape(-1,1) 对其进行整形

标签: python pandas numpy keras sklearn-pandas


【解决方案1】:

制作那个笔记本的人使用的是非常旧的sklearn 版本。简而言之,您的特征是 [row_1, row_2...row_n] 的形式,而它们应该是 [[row_1], [row_2]...[row_n]] 的形式。

因此,使用这个:

new_shape = (len(train), 1)

train_sc = scaler.fit_transform(np.reshape(train, new_shape))
test_sc = scaler.transform(np.reshape(test, new_shape))

【讨论】:

  • 谢谢!但是我遇到了一个新错误:TypeError: len() takes exactly one argument (2 given)
  • @grc 可能 gmds 的意思是 (len(train), 1)
  • @grc @RafaelC 是的,将new_shape 移出单独的语句并忘记移动括号。已编辑。
  • 谢谢。现在它返回这个错误:Data must be 1-dimensional
  • 如果我这样写,它可以工作,但“test_sc”不起作用。 scaler = MinMaxScaler(feature_range=(-1, 1)) train = train.reshape(1,-1) train_sc = scaler.fit_transform(train)
【解决方案2】:

解决了添加以下方法的问题,这些方法显然将训练和测试对象转换为 numpy 数组。对吗?

scaler = MinMaxScaler(feature_range=(-1, 1))
train_sc = scaler.fit_transform(train.values.reshape(-1, 1))
test_sc = scaler.transform(test.values.reshape(-1,1))

【讨论】:

    猜你喜欢
    • 2018-06-06
    • 2021-03-01
    • 2019-10-07
    • 2019-03-28
    • 2021-04-16
    • 2021-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多