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

如何在LinearRegression模型中使用字符串格式日期并完成取值范围转换

线性回归模型使用字符串格式日期的实现方案

1 日期格式转换(保留排序属性)

你需要先把MM/DD/YYYY格式的字符串日期转换为可数值化的时间特征,同时保证日期越靠后数值越大,天然符合排序要求:

  • pandas批量转换示例:
import pandas as pd

# 字符串转datetime对象
df["raw_date"] = pd.to_datetime(df["raw_date"], format="%m/%d/%Y")

2 数值归一化到[0,1)区间

你要求的类似0.2008的取值可以通过两种方式实现,都能保留排序逻辑,适配线性回归输入要求:

方式一:基于全量数据集的相对日期归一化

以全量数据最早日期为基准,最大日期为上限做归一化,保证所有值落在0~1之间:

# 计算距离最早日期的天数差
min_date = df["raw_date"].min()
df["date_days"] = (df["raw_date"] - min_date).dt.days

# 归一化到[0,1)
max_days = df["date_days"].max()
df["date_norm"] = df["date_days"] / (max_days + 1)

方式二:基于年份占比的归一化

可以直接输出和你示例格式一致的带年份标识的归一化值:

# 计算 年份+当年已过天数/全年天数 的格式
df["year_frac"] = df["raw_date"].dt.year + (df["raw_date"].dt.dayofyear / (366 if df["raw_date"].dt.is_leap_year else 365))
# 缩放到0~1区间,得到类似0.2008的取值
df["date_norm"] = df["year_frac"] / 10000

注意事项

  • 归一化用到的最大、最小统计值必须从全量数据集计算,不能仅用训练集数据,否则会破坏全局排序逻辑,甚至出现测试集数值超出[0,1)范围的问题
  • 转换后的date_norm特征可以直接输入线性回归模型,模型可以正常识别时间趋势,不会出现排序混乱的问题

内容的提问来源于stack exchange,提问作者امیرحسین شکیبا

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:06:03