gpt4 book ai didi

python-3.x - 在 python 中使用 lstm 预测值时,“numpy.ndarray”对象没有属性 'iterrows'

转载 作者:行者123 更新时间:2023-11-30 09:15:27 25 4
gpt4 key购买 nike

我有一个包含三个输入的数据集,并尝试结合先前的输入值来预测 X1 的下一个值。

我的三个输入是 X1、X2、X3、X4。

所以我在这里尝试预测 X1 的下一个 future 值。为了预测下一个 X1,这四个输入组合会影响:

X1 + X2 - X3 -X4

我在类中编写了这段代码。然后我编写了运行 lstm 的代码。之后我编写了预测值的代码。然后它给了我这个错误。谁能帮我解决这个问题吗?

我的代码:

def model_predict(data):
pred=[]
for index, row in data.iterrows():
val = row['X1']
if np.isnan(val):
data.iloc[index]['X1'] = pred[-1]
row['X1'] = pred[-1]
f = row['X1','X2','X3','X4']
s = row['X1'] - row['X2'] + row['X3'] -row['X4']
val = model.predict(s)
pred.append(val)
return np.array(pred)

在 lstm 代码之后,我编写了预测值的代码:

pred = model_predict(x_test_n)

给我这个错误:

  ` ---> 5 pred = model_predict(x_test_n)

def model_predict(data):
pred=[]
-->for index, row in data.iterrows():
val = row['X1']
if np.isnan(val):`
AttributeError: 'numpy.ndarray' object has no attribute 'iterrows'

最佳答案

显然,函数的data参数是Numpy数组,而不是DataFrame数据作为np.ndarray,也没有命名列。

可能的解决方案之一,将参数保留为np.ndarray是:

  • 使用 np.apply_along_axis() 迭代此数组的行,
  • 通过索引(而不是名称)引用列。

另一个解决方案是从数据创建DataFrame,设置适当的列名称并迭代其行。

可能的解决方案之一是如何在没有 DataFrame 的情况下编写代码

假设data是一个有4列的Numpy表,分别包含X1X2X3X4:

[[ 1  2  3  4]
[10 8 1 3]
[20 6 2 5]
[31 3 3 1]]

那么你的函数可以是:

def model_predict(data):
s = np.apply_along_axis(lambda row: row[0] + row[1] - row[2] - row[3],
axis=1, arr=data)
return model.predict(s)

请注意:

  • s - 模型的所有输入值 - 可以在一次中计算指令,为每行 (axis=1) 调用 apply_along_axis
  • 预测也可以“一次性”计算,传递一个Numpy矢量 - 只是s

出于演示目的,计算并打印s

关于python-3.x - 在 python 中使用 lstm 预测值时,“numpy.ndarray”对象没有属性 'iterrows',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57235451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com