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

构建线性回归与决策树模型遇报错:无法将日期字符串转为浮点数

解决决策树回归中日期字符串转float的报错问题

报错原因很明确:你的X_train或X_test里包含像'3/1/2019'这样的日期字符串,而DecisionTreeRegressor只接受数值型特征,没法直接处理字符串,所以抛出了ValueError。

下面是两种靠谱的解决方法:

方法一:把日期转换成有意义的数值特征(推荐)

日期本身带时间顺序信息,最好转成能体现这个特性的数值,比如时间戳,或者拆分成年、月、日三个独立特征。用pandas处理的示例代码如下:

import pandas as pd

# 先把日期字符串转成datetime类型(假设日期列名叫'date')
X_train['date'] = pd.to_datetime(X_train['date'])
X_test['date'] = pd.to_datetime(X_test['date'])

# 方式1:转成以天为单位的时间戳(从1970-01-01到该日期的天数)
X_train['date_days'] = (X_train['date'] - pd.Timestamp('1970-01-01')).dt.days
X_test['date_days'] = (X_test['date'] - pd.Timestamp('1970-01-01')).dt.days
# 删除原日期列
X_train.drop('date', axis=1, inplace=True)
X_test.drop('date', axis=1, inplace=True)

# 或者方式2:拆分成年、月、日三个单独特征
X_train['year'] = X_train['date'].dt.year
X_train['month'] = X_train['date'].dt.month
X_train['day'] = X_train['date'].dt.day
X_test['year'] = X_test['date'].dt.year
X_test['month'] = X_test['date'].dt.month
X_test['day'] = X_test['date'].dt.day
X_train.drop('date', axis=1, inplace=True)
X_test.drop('date', axis=1, inplace=True)

处理完之后再运行你原来的决策树训练代码就行。

方法二:标签编码(仅适合特殊场景)

如果你的日期是离散且不需要保留时间顺序的场景,可以用LabelEncoder把字符串转成数值,但这种方法会丢失日期的时间逻辑,不推荐常规日期使用:

from sklearn.preprocessing import LabelEncoder

# 用训练集的数据拟合编码器
le = LabelEncoder()
X_train['date'] = le.fit_transform(X_train['date'])
# 测试集直接用训练集的编码器转换,不要重新拟合
X_test['date'] = le.transform(X_test['date'])

内容的提问来源于stack exchange,提问作者Deepak Budhiraja

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:01:01