LSTM建模中inverse_transform()维度不匹配报错求助
问题原因
你用MinMaxScaler拟合的是11个特征的完整数据集,因此inverse_transform要求输入数据的列数必须等于11,但你的trainPredict、trainY只有1列(仅收盘价),维度不匹配导致报错。
解决方案
有两种可行的修复方式,根据你的需求选择:
方式一:单独对收盘价做归一化(推荐)
既然你预测的是收盘价,直接单独对收盘价列做归一化,避免多特征维度不匹配问题:
- 归一化阶段只处理收盘价列:
# 假设数据集里收盘价是第0列或指定列名(比如'close') scaler = MinMaxScaler(feature_range=(0,1)) scaled_close = scaler.fit_transform(df[['close']]) # 仅对收盘价列做归一化 # 后续构造数据集时,使用scaled_close(形状为(n_samples,1)) trainX, trainY = create_dataset(scaled_close, look_back=3) testX, testY = create_dataset(scaled_test_close, look_back=3)
- 逆变换时直接传入1列数据即可:
trainPredict = scaler.inverse_transform(trainPredict) trainY = scaler.inverse_transform(trainY.reshape(-1,1)) testPredict = scaler.inverse_transform(testPredict) testY = scaler.inverse_transform(testY.reshape(-1,1))
方式二:构造符合scaler要求的11列数据再逆变换
如果必须保留对11个特征的归一化,需要将1列的预测值/真实值填充为11列数据(仅对应收盘价的列有效,其他列补0不影响逆变换结果):
# 处理训练集预测值和真实值 trainPredict_full = np.zeros((len(trainPredict), 11)) trainPredict_full[:, 0] = trainPredict.flatten() # 把预测值放到收盘价对应的列(第0列) trainPredict = scaler.inverse_transform(trainPredict_full)[:, 0] # 逆变换后提取收盘价列 trainY_full = np.zeros((len(trainY), 11)) trainY_full[:, 0] = trainY.flatten() trainY = scaler.inverse_transform(trainY_full)[:, 0] # 测试集同理 testPredict_full = np.zeros((len(testPredict), 11)) testPredict_full[:, 0] = testPredict.flatten() testPredict = scaler.inverse_transform(testPredict_full)[:, 0] testY_full = np.zeros((len(testY), 11)) testY_full[:, 0] = testY.flatten() testY = scaler.inverse_transform(testY_full)[:, 0]
额外提示:你的create_dataset未用到11个特征
注意看你的create_dataset函数里,a = dataset[i:(i+look_back), 0]只取了第0列(收盘价)作为输入特征,等于没用到另外10个特征。如果要使用全部11个特征训练LSTM,需要修改函数:
def create_dataset(dataset, look_back=1): dataX, dataY = [], [] for i in range(len(dataset)-look_back-1): # 取look_back步的所有11个特征 a = dataset[i:(i+look_back), :] dataX.append(a) dataY.append(dataset[i + look_back, 0]) # 预测目标还是收盘价(第0列) return np.array(dataX), np.array(dataY).reshape(-1, 1)
修改后trainX的形状会变成(693, 3, 11),符合LSTM输入要求(样本数,时间步,特征数)。
内容的提问来源于stack exchange,提问作者CK1
相关产品推荐
相关产品推荐

