本文将详细介绍在机器学习模型中,如何将经过对数转换(np.log)的因变量预测结果准确地还原回原始数值尺度。通过使用指数函数np.exp(),我们不仅能正确评估模型在原始数据上的性能,还能使预测结果更具实际意义和可解释性。教程涵盖了从数据转换、模型训练到最终逆变换及结果展示的全过程,并强调了逆变换在模型评估中的重要性。
在数据预处理阶段,对数转换(如自然对数 np.log())是机器学习中常用的技术,尤其适用于以下情况:
在进行对数转换时,通常需要确保原始数值为正。如果存在非正值,需要进行适当的处理(例如,加一个小的常数使所有值大于零,或者只对正值进行转换)。
示例:对独立变量和因变量进行对数转换
假设我们对数据集 dtd 中的 value_eur(因变量)和 wage_eur(独立变量)进行了对数转换。
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_absolute_error
# 假设 dtd 是你的 DataFrame,dtk 是原始 DataFrame的副本或原始数据
# 为了演示,我们创建一个示例 DataFrame
data = {
'value_eur': [1000, 25000, 500, 75000, 100, 120000, 3000, 80000, 200, 45000],
'wage_eur': [100, 2500, 50, 7500, 10, 12000, 300, 8000, 20, 4500],
'feature1': np.random.rand(10) * 100,
'feature2': np.random.rand(10) * 50
}
dtd = pd.DataFrame(data)
dtk = dtd.copy() # 假设 dtk 是原始数据
# 对正值进行对数转换
mask_value = dtd['value_eur'] > 0
dtd.loc[mask_value, 'value_eur'] = np.log(dtk.loc[mask_value, 'value_eur'])
mask_wage = dtd['wage_eur'] > 0
dtd.loc[mask_wage, 'wage_eur'] = np.log(dtk.loc[mask_wage, 'wage_eur'])
print("对数转换后的数据示例:")
print(dtd.head())在对数据进行对数转换后,我们使用这些转换后的数据来训练机器学习模型。模型的输出(预测值)也将处于对数尺度。
示例:定义特征和目标,训练模型并进行预测
# 定义特征 X 和目标 y
X = dtd.drop(['value_eur'], axis=1)
y = dtd['value_eur']
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 假设 regressor 是一个已经训练好的模型(例如通过 GridSearchCV 得到的最佳估计器)
# 这里我们用一个简单的 RandomForestRegressor 作为示例
from sklearn.ensemble import RandomForestRegressor
regressor = RandomForestRegressor(random_state=42)
regressor.fit(X_train, y_train)
# 进行预测,预测结果 regs 处于对数尺度
regs = regressor.predict(X_test)
print("\n模型预测结果 (对数尺度):")
print(regs)模型的预测结果 regs 是对数转换后的值。为了使这些预测结果具有实际意义,并能与原始数据的真实值进行直接比较,我们需要将它们还原回原始尺度。对数转换的逆运算是指数运算,即 np.exp() 函数。
示例:使用 np.exp() 还原预测值
# 将对数尺度的预测值还原为原始尺度
y_pred_original = np.exp(regs)
print("\n还原后的预测值 (原始尺度):")
print(y_pred_original)在还原预测值后,我们通常需要:
示例:计算原始尺度 MAE 并展示结果
# 将测试集真实值也还原为原始尺度,以便进行公平比较和评估
y_test_original = np.exp(y_test)
# 计算原始尺度的平均绝对误差 (MAE)
mae_original = mean_absolute_error(y_test_original, y_pred_original)
print(f"\n原始尺度的平均绝对误差 (MAE): {mae_original:.2f}")
# 创建一个 DataFrame 来展示原始尺度的预测值和真实值
results_original = pd.DataFrame({
'预测值 (原始尺度)': y_pred_original,
'真实值 (原始尺度)': y_test_original
})
print("\n原始尺度下的预测值与真实值对比:")
print(results_original.head())
可解释性,使非专业人士也能理解模型的预测效果。在机器学习流程中,对数转换是一种有效的数据预处理技术,但它要求我们对模型的预测结果进行逆转换,才能将其还原到原始数据的尺度。通过熟练运用 np.exp() 函数,我们不仅能够获得具有实际意义的预测值,还能在原始数据层面对模型性能进行准确评估。掌握这一技能对于构建和部署实用的机器学习模型至关重要。
# ai
# red
# 线性回归
# 原始数据
# 的是
# 创建一个
# 实际意义
# 在对
# 进行了
# 原为
# 是一个
# 指数函数
# 逆变
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
Win11怎么关闭右下角弹窗_Win11拦截系统通知广告【设置】
php485函数执行慢怎么优化_php485性能提升小技巧【技巧】
Win11如何设置电源计划_Win11电源计划优化教程【攻略】
Windows系统时间服务错误_W32Time服务修复与同步教学
Win10电脑怎么设置网络名称_Windows10注册表NetworkList修改
Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置
Mac电脑如何恢复出厂设置_Mac抹掉数据并重装系统【安全指南】
如何使用正则表达式批量替换重复的 *- 模式为固定字符串
win11如何清理传递优化文件 Win11为C盘瘦身删除更新缓存【技巧】
微信短链接怎么还原php_用浏览器开发者工具抓包获取【方法】
c++怎么使用std::tuple存储多元组数据_c++ 11获取元素与解包操作【技巧】
windows系统如何安装cab更新补丁_windows手动安装更新包教程
WindowsUSB驱动安装异常怎么办_USB驱动重建与恢复教程
Windows10系统更新错误0x80070002_Win10自动更新失败手动修复
Win11任务栏天气怎么关闭 Win11隐藏天气小组件图标【设置】
mac怎么打开终端_MAC终端Terminal使用入门与常用命令【教程】
c++怎么操作redis数据库_c++ hiredis库连接与命令执行【实战】
Python项目回滚策略_发布安全说明【指导】
XSLT怎么生成动态的HTML属性名和标签名
Python 模块的 __name__ 属性如何由导入方式决定?
VSC里PHP变量未定义报错怎么解决_错误抑制技巧【解答】
Python性能剖析高级教程_cProfileLineProfiler优化案例解析
如何在 Windows 11 中使用 AlomWare 工具箱
LINUX如何删除用户和用户组_Linux userdel和groupdel命令用法【系统管理】
Go 中 := 短变量声明的类型推导机制详解
c++如何实现多态性_c++ 虚函数表原理与动态绑定机制【教程】
Win11怎样安装搜狗输入法_Win11安装搜狗输入法教程【步骤】
如何在JavaScript中动态拼接PHP的base_url与JS变量
windows如何修改文件默认打开方式_windows设置程序关联教程
Windows10如何删除Windows.old_Win10磁盘清理系统文件选项
ACF 教程:如何正确更新嵌套在多层 Group 字段内的子字段
Python生成器表达式内存优化_惰性计算说明【指导】
Linux如何安装Tomcat应用服务器_Linux环境部署与端口修改【教程】
如何使用Golang实现多重错误处理_Golangerror组合与判断方法
Windows10系统怎么查看系统版本_Win10运行winver命令查询
如何解决同一段404代码在不同主机上表现不一致的问题
Python字符串操作教程_切片拼接与格式化详解
Win11相机打不开提示错误怎么修_相机权限开启与驱动修复【影像修复】
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
Win11怎么设置按流量计费_Win11限制后台流量消耗【网络】
如何在 Laravel 中通过嵌套关联关系进行 orderBy 排序
Python并发安全问题_资源竞争说明【指导】
LINUX如何开放防火墙端口_Linux firewalld与iptables开放端口命令【安全配置】
如何在 Go 后端安全获取并验证前端存储的 JWT?
c++如何获取map中所有的键_C++遍历键值对提取所有key的方法
如何使用Golang实现容器健康检查_监控和自动重启
C++ STL算法库怎么用?C++常用算法函数(sort, find)教程【效率提升】
Win10如何更改任务栏高度_Windows10解锁任务栏调整大小
Win11如何关闭游戏模式 Win11禁用Xbox Game Bar录制【优化】
如何在 Go 中判断变量是否为函数类型
2025-12-13
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。