科普:np.log1p 与 np.expm1及其它

📅 2026/7/31 1:40:08
科普:np.log1p 与 np.expm1及其它
NumPy中对数与指数常用np.log1p 与 np.expm1这里我们总结一下相关的对数函数当然你可对应到其反函数指数函数对数函数清单 数学公式函数数学表达式定义域np.log(x)yln⁡(x)y\ln(x)yln(x)自然对数KaTeX parse error: Cant use function \( in math mode at position 1: \̲(̲x0\)np.log10(x)ylog⁡10(x)y\log_{10}(x)ylog10​(x)以10为底KaTeX parse error: Cant use function \( in math mode at position 1: \̲(̲x0\)np.log2(x)ylog⁡2(x)y\log_{2}(x)ylog2​(x)以2为底KaTeX parse error: Cant use function \( in math mode at position 1: \̲(̲x0\)np.log1p(x)yln⁡(1x)y\ln(1x)yln(1x)x−1x-1x−1np.logaddexp(a,b)ln⁡(eaeb)\ln(e^ae^b)ln(eaeb)防止指数溢出np.logaddexp2(a,b)log⁡2(2a2b)\log_2(2^a2^b)log2​(2a2b)信息论常用重点详解① np.log(x)自然对数底数eeeimportnumpyasnpprint(np.log(np.e))# 1.0print(np.log(10))# ≈2.302585⚠️致命缺陷x≤0x \le 0x≤0直接返回-inf/nan程序警告np.log(0)# -infnp.log(-5)# nan不能直接用于包含0的销量数据② np.log1p(x)公式log1p(x)ln⁡(1x)\boldsymbol{\text{log1p}(x) \ln(1x)}log1p(x)ln(1x)逆变换np.expm1(y)满足expm1(log1p(x))x\text{expm1}(\text{log1p}(x)) xexpm1(log1p(x))xnp.log1p(0)# ln(10)0 ✅ 完美支持x0np.log1p(9)# ln(10) ≈ 2.3025两大核心优势支持输入0处理销量、计数这类 ≥0 的数据首选数值精度更高当xxx非常接近0时np.log(1x)存在浮点舍入误差log1p使用专用算法精度更好。# 微小数值对比x1e-10print(np.log(1x))print(np.log1p(x))# 结果更精准③ np.expm1(x)yex−1ye^x -1yex−1log1p的成对逆函数expm1(ln⁡(1x))x\text{expm1}(\ln(1x)) xexpm1(ln(1x))x千万别写错❌错误还原np.exp(pred)✅正确还原np.expm1(pred)④ np.log10() / np.log2()分别是以10、2为底对数。np.log10(100)# 2np.log2(8)# 3机器学习回归任务极少使用。时序销量预测几乎一律用自然对数体系log1p。3. 关键对比np.log(x) VS np.log1p(x)场景A数据严格 0两者理论等价np.log1p(x) np.log(1x)场景B数据包含 0你的销售数据场景np.log(x)❌ 报错/无穷值无法使用np.log1p(x)✅ 合法log1p(0)0直观示例salesnp.array([0,1,10,100])print(np.log1p(sales))# [0. 0.69314718 2.30258509 4.60517019]# print(np.log(sales)) # 直接警告0位置出现 -inf什么时候选用哪种对数变换✅ 优先使用 np.log1p np.expm1适用计数类、销量、流量、金额值域x≥0\boldsymbol{x\ge0}x≥0存在大量0样本典型场景Kaggle销量预测、点击率、商品订单量✅ np.log()适用输入严格大于0无零值、无负数例如价格比率、密度。✅ log10()适用需要十进制量级展示绘图、科学观测机器学习建模很少。✅ log2()适用信息熵、信号处理、计算机算法复杂度分析。常见踩坑变换与逆变换不配对使用log1p训练模型预测后却只用np.exp()结果严重偏小# 错误pred_rawnp.exp(pred_log)# 正确pred_rawnp.expm1(pred_log)分不清适用范围对含0数据强行使用np.log()产生无穷值模型训练崩溃。重复变换训练集做了log1p验证集/测试集再次log1p造成双重对数压缩。