【问题标题】:'numpy.ndarray' object has no attribute 'drop'“numpy.ndarray”对象没有属性“drop”
【发布时间】:2019-12-10 17:53:01
【问题描述】:

我有一个包含四个输入的数据集,名为 X1、X2、X3、X4。 在这里,我创建了 lstm 模型,用四个输入的先前值预测下一个 X1 值。

这里我把时间改成了分钟,然后我把时间设置为索引。

然后我创建了 x_train、x_test、y_test 和 y_train。然后我想把时间放在 x_train 和 x_test 中。

我使用了代码:

data= pd.DataFrame(data,columns=['X1','X2','X3','X4'])
pd.options.display.float_format = '{:,.0f}'.format
print(data)

数据:

y=data['X1'].astype(int)
cols=['X1', 'X2', 'X3','X4']
x=data[cols].astype(int)

data=data.values
scaler_x = preprocessing.MinMaxScaler(feature_range =(0, 1))
x = np.array(x).reshape ((len(x),4 ))
x = scaler_x.fit_transform(x)
scaler_y = preprocessing.MinMaxScaler(feature_range =(0, 1))
y = np.array(y).reshape ((len(y), 1))
y = scaler_y.fit_transform(y)

train_end = 80
x_train=x[0: train_end ,]
x_test=x[train_end +1: ,]
y_train=y[0: train_end]
y_test=y[train_end +1:] 
x_train=x_train.reshape(x_train.shape +(1,))
x_test=x_test.reshape(x_test.shape + (1,))

x_train = x_train.drop('time', axis=1)
x_test = x_test.drop('time', axis=1)

然后报错:'numpy.ndarray' object has no attribute 'drop'

谁能帮我解决这个错误?

【问题讨论】:

  • 请向我们展示您在数据集中的加载方式以及训练和测试的前几行。你假设它是一个 pandas 数据框,但它是一个 numpy 数组。
  • @rayryeng 是的,我编辑了我的问题。我希望你现在能理解我的代码

标签: python pandas numpy machine-learning lstm


【解决方案1】:

由于您提取了 Pandas 数据框的值,因此您的数据已转换为 NumPy 数组,因此已删除列名。时间列是数据的第一列,因此您真正需要做的就是对其进行索引,以便提取第二列及以后的列:

x_time_train = x_train[:, 0]
x_train = x_train[:, 1:]
x_time_test = x_test[:, 0]
x_test = x_test[:, 1:]

请注意,我已将训练和测试数据集的时间值分开,因为您需要它们进行绘图。

【讨论】:

  • 是的,我明白你在说什么。感谢您的答复。所以如果我想在训练模型后绘制预测值和实际值,那么如何将时间应用为 x 轴,因为我应用了时间来绘制我的图表并且它在 x 轴上没有显示任何内容。
  • @team 简单。提取两者之间的时间变量:x_time_train = x_train[:, 0]; x_time_test = x_test[:, 0]。您有两个单独的数组,其中包含两个数据集的时间间隔,您现在可以将其用于绘图。
  • 非常感谢,这对我真的很有帮助。
  • @team 没问题!我已经更新了我的答案,因此您可以在覆盖数据集之前将时间变量分开,这样它们就不再具有时间值。祝你好运!
  • @rayryeng 我还有一个问题,比如如果我把 "data.set_index('time', inplace=True)" 然后尝试写 x_train 和 x_test,。训练模型后,随时间绘制预测值和实际值。那么我可以将那个时间用于x轴吗?如果你能回答这个问题,对我的帮助会更大吗?
【解决方案2】:

X_train 是一个数组而不是数据框 您需要知道要删除的列的位置

  np.delete(X_train, [index_to_drop], 1)

【讨论】:

  • 好的,那我怎样才能把时间放到 x_train. ,我尝试了很多方法。如果您知道任何解决方案可以发布吗?
  • 您的回答没有帮助。请提供解决问题的方法。
  • @Benoit de Menthière 感谢您的回复,但这不是我期待的答案,也不是正确的答案。
  • 你在找什么,我向你解释如何在 np.array 中删除一列,因为你的 X_train 是一个数组
猜你喜欢
  • 2020-12-30
  • 2020-09-22
  • 2020-02-21
  • 2020-12-08
  • 2017-07-10
  • 2020-05-10
  • 2019-11-04
  • 2017-05-24
  • 2021-06-14
相关资源
最近更新 更多