调用scaler.transform时出现特征数不匹配的ValueError问题求助
问题原因与解决方法
错误原因
你用MinMaxScaler拟合的是包含4个特征(y、h、o、l)的数据集,scaler会记住这4个特征的缩放规则。但后续代码里你把model_inputs通过reshape(-1, 1)改成了仅1个特征的数组,和scaler预期的4特征输入不匹配,所以触发了ValueError。
解决方案
情况1:需要对4个特征统一缩放(和训练scaler时的逻辑一致)
直接删除model_inputs = model_inputs.reshape(-1, 1)这一行即可,因为切片后的model_inputs本身就保留了4列的结构,符合scaler的输入要求:
total_dataset = df.values model_inputs = total_dataset[len(total_dataset) - test_data - prediction_days:] print(model_inputs) # 移除多余的reshape操作 model_inputs = scaler.transform(model_inputs)
情况2:仅需要对单个特征(比如y列)做缩放
如果你的目标是只处理其中某一列数据,那需要在训练scaler时就只针对该列拟合,后续也只传入对应列的数据:
# 仅针对y列训练scaler scaler = MinMaxScaler() scaled_data = scaler.fit_transform(df[['y']]) # 后续提取y列数据并处理 total_dataset = df.values # 提取第0列(即y列)并调整形状 model_inputs = total_dataset[len(total_dataset) - test_data - prediction_days:, 0].reshape(-1, 1) model_inputs = scaler.transform(model_inputs)
内容的提问来源于stack exchange,提问作者Lubomir
相关产品推荐
相关产品推荐

