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

如何将回归模型的对数转换预测值与真实值还原为原始数值?

对数转换后预测结果的原始值还原方案

一、前期数据处理与模型流程回顾

1. 对数转换处理

对数据集dtd中的自变量wage_eur和因变量value_eur做非零值对数转换,代码如下:

mask = dtd['value_eur'] > 0  # 创建非零值布尔掩码
dtd['value_eur'] = np.log(dtd.loc[mask, 'value_eur'])  # 仅对非零值应用对数转换
mass = dtd['wage_eur'] > 0  # 创建非零值布尔掩码
dtd['wage_eur'] = np.log(dtd.loc[mass, 'wage_eur'])  # 仅对非零值应用对数转换

(注:原代码存在笔误,dtk应为dtd,wage_eur处理时误用了mask,已修正为对应掩码mass)

2. 构建预测变量

X = dtd.drop(['value_eur'], axis=1)
y = dtd['value_eur']

3. 模型拟合与预测

regressor = gs.best_estimator_

regressor.fit(X_train, y_train)
regs = regressor.predict(X_test)

mae3 = mean_absolute_error(y_test, regs)

print(f"Mean Absolute Error: {mae3}")

4. 输出的对数转换后结果

gridspredicted valuestrue values
6019915.66511015.761421
2374312.55700312.765688
5842815.38621915.424948
3453815.58806615.226498
10822914.20258014.457364

二、原始数值还原完整实现方法

由于前期使用自然对数(np.log)做转换,还原时只需对对数转换后的预测值和真实值应用指数函数np.exp()即可,具体实现如下:

1. 单独还原预测值与真实值

import numpy as np

# 还原模型预测的对数结果为原始数值
original_preds = np.exp(regs)
# 还原测试集真实值的对数结果为原始数值
original_trues = np.exp(y_test)

2. 结合结果表格批量还原

如果要将输出的结果表格直接还原为原始数值,可转为DataFrame后对指定列应用np.exp():

import pandas as pd

# 假设结果表格已存入DataFrame df
df = pd.DataFrame({
    'grids': [60199, 23743, 58428, 34538, 108229],
    'predicted values': [15.665110, 12.557003, 15.386219, 15.588066, 14.202580],
    'true values': [15.761421, 12.765688, 15.424948, 15.226498, 14.457364]
})

# 对预测值和真实值列做指数还原
df['original_predicted'] = np.exp(df['predicted values'])
df['original_true'] = np.exp(df['true values'])

# 查看还原后的结果
print(df[['grids', 'original_predicted', 'original_true']])

注意事项

  • 仅对前期做过对数转换的非零值数据应用还原,原数据中的零值未做对数转换,需保留原始零值;
  • 若要评估原始数据的预测误差,需基于还原后的数值重新计算MAE:
original_mae = mean_absolute_error(original_trues, original_preds)
print(f"原始数值的Mean Absolute Error: {original_mae}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 01:21:13