机器学习进阶文档深度页
偏态与周期特征变换
用 log1p 缓和非负长尾分布,用正弦/余弦保留小时、星期等周期相邻关系。
学习前需要掌握
对数函数内容待补充三角函数内容待补充
背景与问题
金额和次数常有长尾;小时直接编码 0~23 会错误地认为 23 与 0 很远。
概念定义
偏态变换改变数值分布形状;周期编码把首尾相接的变量映射到单位圆。
直观理解
log1p 压缩大值而保留顺序;sin/cos 把钟表时间放在圆上,让 23 点与 0 点自然接近。
核心原理
log1p 适用于非负值;周期 T 的编码为 sin(2πx/T)、cos(2πx/T),两列共同确定相位。
数学表达
长尾变换
非负数据中压缩大值。
变量含义
变量定义与本页概念定义一致,代码中的同名变量保持相同语义。
计算步骤
- 1检查变量定义与范围。
- 2非负长尾比较 log1p 前后分布。
- 3确定周期 T。
- 4同时生成 sin/cos 两列。
代码对应位置
示例 1金额与小时变换:实现文档中的 log1p 和 24 小时周期编码。
周期编码
T 是周期长度。
变量含义
变量定义与本页概念定义一致,代码中的同名变量保持相同语义。
计算步骤
- 1检查变量定义与范围。
- 2非负长尾比较 log1p 前后分布。
- 3确定周期 T。
- 4同时生成 sin/cos 两列。
代码对应位置
示例 1金额与小时变换:实现文档中的 log1p 和 24 小时周期编码。
计算与实现步骤
- 1
检查变量定义与范围。
- 2
非负长尾比较 log1p 前后分布。
- 3
确定周期 T。
- 4
同时生成 sin/cos 两列。
- 5
在验证集比较效果。
代码实现
示例 1
金额与小时变换
金额与小时变换
NumPy
example_01.py用途:实现文档中的 log1p 和 24 小时周期编码。
import numpy as np
amount_log = np.log1p(amount)
hour_sin = np.sin(2 * np.pi * hour / 24)
hour_cos = np.cos(2 * np.pi * hour / 24)代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
实现文档中的 log1p 和 24 小时周期编码。
Step 1 · 1–1 行
导入当前步骤需要的数值计算、预处理、模型或评价工具。依赖集中写在代码开头,便于复现。
import numpy as npStep 2 · 3–5 行
周期必须用两列,否则无法唯一表示位置。
amount_log = np.log1p(amount)
hour_sin = np.sin(2 * np.pi * hour / 24)
hour_cos = np.cos(2 * np.pi * hour / 24)预期输出或运行结果
一个压缩后的金额特征,以及范围在 [-1,1] 的 hour_sin/hour_cos。
常见错误 · 3 条
- 对含负数数据直接 log1p
- 只用 sin 或 cos 一列
- 没有明确真实周期
实际应用
- 金额与访问次数
- 小时、星期与季节
常见错误
对含负数数据直接 log1p
只用 sin 或 cos 一列
没有明确真实周期
文档来源
02|数据预处理与特征工程原始文档
学习资料/learning_tech/02_preprocessing_feature_engineering.md- §10 偏态特征变换
- §10 日期和周期特征
推荐学习资料
暂未收录相关资料
参考库不会生成虚假资源或无效外部链接。