You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LSTM股价预测模型用MinMaxScaler归一化时报Timestamp类型错误如何解决

错误原因

核心问题为代码执行顺序错误,MinMaxScaler仅支持对数值类型数据做归一化运算,你传入的final_dataset中包含Timestamp类型的日期数据,无法转换为浮点型参与运算,因此抛出类型错误。
具体执行顺序问题如下:

  • 你提前执行了final_dataset=new_dataset.values,此时new_dataset还未删除Date列,final_dataset中已经存入了Timestamp格式的日期数据
  • 后续执行的new_dataset.drop("Date",axis=1,inplace=True)仅修改了new_dataset本身,不会同步更新已经完成赋值的final_dataset变量
修复方案

调整代码执行顺序,先完成日期列的处理再生成final_dataset,同时可删除冗余的MinMaxScaler重复初始化代码,修正后的代码片段如下:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from keras.models import Sequential
from keras.layers import LSTM,Dropout,Dense
from matplotlib.pylab import rcParams
rcParams['figure.figsize']=20,10
from sklearn.preprocessing import MinMaxScaler

# 先处理日期列,再生成数据集
new_dataset.index=new_dataset.Date
new_dataset.drop("Date",axis=1,inplace=True)

scaler=MinMaxScaler(feature_range=(0,1))
final_dataset=new_dataset.values
scaled_data=scaler.fit_transform(final_dataset)

train_data=final_dataset[0:987,:]
valid_data=final_dataset[987:,:]

x_train_data,y_train_data=[],[]
for i in range(60,len(train_data)):
    x_train_data.append(scaled_data[i-60:i,0])
    y_train_data.append(scaled_data[i,0])

x_train_data,y_train_data=np.array(x_train_data),np.array(y_train_data)
x_train_data=np.reshape(x_train_data,(x_train_data.shape[0],x_train_data.shape[1],1))
补充校验建议

可以在做归一化前执行print(new_dataset.dtypes),确认所有字段均为int/float等数值类型,避免其他非数值字段导致同类错误。

内容的提问来源于stack exchange,提问作者Black040

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 14:06:03