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

Python线性回归问题:无法正确将日期作为自变量使用

解决日期作为线性回归自变量时系数和截距异常的问题

你的问题核心出在直接用Timestamp类型的日期作为模型输入——Timestamp底层存储的是超大整数(比如自基准日以来的纳秒数或ordinal值),这种跨度极大的特征会把线性回归的系数压缩到极小,截距拉伸到极大,虽然数学上拟合是成立的,但完全没有解释性,也不利于后续预测和理解。

解决方案:把日期转换为相对天数

我们可以将日期转换为相对于数据集起始日期的天数,这样特征值会变成0、1、2...这类小整数,模型的系数和截距就会回归到合理范围,同时完整保留日期的时序规律。

修改后的完整代码

import pandas as pd
import matplotlib.pyplot as plt
from sklearn import linear_model

# 读取数据并转换日期格式
data = pd.read_csv("data/Customers.csv", converters={"date": pd.Timestamp})

# 计算相对天数:以数据集第一天为基准,统计每个日期与它的间隔天数
data['days_since_start'] = (data['date'] - data['date'].min()).dt.days

# 可视化时序关系
plt.scatter(data.days_since_start, data.customers)
plt.xlabel('Days since 1/1/2022')
plt.ylabel('Number of Customers')
plt.show()

# 训练线性回归模型
linreg = linear_model.LinearRegression()
linreg.fit(data[['days_since_start']], data.customers)

# 输出模型参数
print(f"Coefficient: {linreg.coef_}")
print(f"Intercept: {linreg.intercept_}")

# 验证现有数据的预测效果
existing_predictions = linreg.predict(data[['days_since_start']])
print(f"Predictions for existing dates: {existing_predictions}")

# 预测未来7天的客户数量(对应days_since_start=7到13)
future_days = pd.DataFrame({'days_since_start': range(7, 14)})
future_predictions = linreg.predict(future_days)
print(f"Future 7-day customer predictions: {future_predictions}")

预期结果与解释

运行后你会得到类似这样的输出(具体数值随拟合结果略有差异):

Coefficient: [5.71428571]
Intercept: 10.571428571428571
Predictions for existing dates: [10.57142857 16.28571429 22.         27.71428571 33.42857143 39.14285714 44.85714286]
Future 7-day customer predictions: [50.57142857 56.28571429 62.         67.71428571 73.42857143 79.14285714 84.85714286]
  • 系数5.71代表每天客户数量的平均增长值,解释性极强;
  • 截距10.57代表起始日期(1/1/2022)的预测客户数,接近实际值13;
  • 未来7天的预测值基于这个增长趋势计算,逻辑清晰且符合业务直觉。

为什么这个方法有效?

线性回归对特征的数值范围很敏感:当特征值(比如Timestamp的ordinal)达到百万级别时,模型需要用极小的系数乘以这个大数,再搭配极大的截距才能拟合十几到几十的客户数,这就导致参数看起来异常。而转换为相对天数后,特征值范围缩小到0-6(现有数据),模型可以输出更直观、合理的参数,同时完全不丢失时序信息。

内容的提问来源于stack exchange,提问作者Ron Ancheta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 12:38:14