能否在LSTM预测模型中遍历Pandas DataFrame获取指定行预测结果?
可行方案:获取指定范围行的预测数值数组
完全可以实现,核心是先对指定范围的原始数据完成与训练流程一致的预处理,再用模型预测后反标准化得到结果。以下是具体步骤和代码:
步骤1:提取指定范围的原始数据
先从DataFrame中取出你需要的行范围,比如第0到20行(注意iloc是左闭右开,包含第20行需用0:21):
# 提取0到20行的原始数据(包含第20行) target_subset = df.iloc[0:21]
步骤2:执行一致的预处理操作
使用训练时的同一个StandardScaler实例对该子集做标准化处理(确保和训练数据的预处理逻辑完全一致,比如训练时只处理特定特征列,这里也要选择相同列):
# 预处理指定范围的数据 scaled_target = scaler.transform(target_subset)
步骤3:模型预测并反标准化
用训练好的模型对预处理后的子集预测,再通过inverse_transform还原到原始数值尺度:
# 预测 y_pred_subset = model.predict(scaled_target) # 反标准化并转为整数 predicted_array = scaler.inverse_transform(y_pred_subset).astype(int) # 输出结果 print("指定范围的预测数值数组:") print(predicted_array)
你之前尝试的问题说明
df.iterrows()/df.iteritems():这两个方法遍历的是原始未预处理的数据,没有经过模型要求的标准化,无法直接得到预测结果。for index, row in np.array([scaled_to_predict]):错误原因是np.array([scaled_to_predict])生成的二维数组,遍历每个元素时只有单行数据,无法解包成index, row两个值。如果要遍历预处理后的行,直接写:for row in scaled_to_predict: print(row)
内容的提问来源于stack exchange,提问作者majcram
相关产品推荐
相关产品推荐

