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

使用scikit-learn线性回归处理新冠数据集报invalid type promotion错误的原因

报错核心原因

scikit-learn的线性回归模型要求输入的所有特征必须为数值类型,你选择的特征列表中包含了datetime64[ns]类型的date列,NumPy无法将日期类型和浮点类型统一为兼容的数据类型,因此触发了invalid type promotion类型升级失败报错。

修复方案

方案1:不需要使用日期特征时,直接从特征列表中移除date列

reg = linear_model.LinearRegression()
# 仅保留数值型特征
x = ['people_vaccinated', 'population']
y = 'new_deaths'
reg.fit(df[x], df[y])

方案2:需要保留日期信息时,先将日期转换为数值格式

你可以根据业务需要选择以下任意一种转换方式:

  • 转换为秒级时间戳
  • 转换为距离数据集最早日期的天数
    示例代码如下:
# 方式1:转秒级时间戳
df['date_timestamp'] = df['date'].astype('int64') // 10**9

# 方式2:转距离最早日期的天数
df['date_diff_days'] = (df['date'] - df['date'].min()).dt.days

# 用转换后的数值型日期特征建模
reg = linear_model.LinearRegression()
x = ['date_diff_days', 'people_vaccinated', 'population']
y = 'new_deaths'
reg.fit(df[x], df[y])
额外注意事项
  • scikit-learn的所有传统机器学习模型都不支持直接输入字符串、日期等非数值类型特征,使用前必须转换为数值格式
  • 后续如果需要使用location列作为特征,需要通过独热编码、标签编码等方式转换为数值后再使用

内容的提问来源于stack exchange,提问作者Bruce Murdock

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:57:03