预测值逆标准化时出现长度不匹配错误的求助
逆标准化维度不匹配问题的解决方法
问题根源
你的数据集包含2列,train_mean和train_std是这两列各自的统计值(返回长度为2的Series),而模型预测出的test_predict是对应标签列的一维/二维数组(长度14604),直接用整个Series和预测值做运算,会因维度不匹配触发报错。
解决步骤
提取标签列对应的均值和标准差
假设你的标签是数据集中的某一列(比如列名为target,或第二列),单独提取该列的统计值:# 按列名提取示例 target_mean = train_mean['target'] target_std = train_std['target'] # 按索引提取示例(假设标签是第二列,索引为1) target_mean = train_mean.iloc[1] target_std = train_std.iloc[1]对预测值执行逆标准化
用标签列的标量均值/标准差和预测值运算,numpy会自动处理维度广播:inverse_data = (test_predict * target_std) + target_mean
补充说明
如果create_dataset函数是将多列作为特征、仅用某一列作为标签,那么逆标准化只需要针对标签列的统计值操作,无需用到所有列的均值/标准差,这是解决问题的核心。
内容的提问来源于stack exchange,提问作者Shahid Khan
相关产品推荐
相关产品推荐

