如何解决TypeError: float()参数必须是字符串或数字而非Timestamp错误?
错误原因
你的训练集X_train中包含Timestamp类型的特征,而你使用的所有机器学习模型(LR、LDA、KNN等)无法直接处理这类非数值/非类别数据,在模型尝试将其转换为浮点型输入时触发了TypeError。
修复方案
将Timestamp转换为数值型特征(推荐)
可以把时间戳转为Unix时间戳(秒级/毫秒级),或者提取年、月、日等衍生时间特征,示例代码:# 假设X_train是DataFrame,目标时间列名为'time_feature' # 转换为Unix秒级时间戳 X_train['time_feature'] = X_train['time_feature'].astype('int64') // 10**9 # 或者提取时间衍生特征 X_train['year'] = X_train['time_feature'].dt.year X_train['month'] = X_train['time_feature'].dt.month X_train['day'] = X_train['time_feature'].dt.day # 删除原Timestamp列 X_train = X_train.drop('time_feature', axis=1)若时间特征无意义,直接删除
如果该时间戳对预测没有帮助,可直接从训练集中移除:# 替换为你的Timestamp列名 X_train = X_train.drop('time_feature', axis=1)
验证
修改X_train的特征类型后,重新运行你提供的模型评估代码即可解决该错误。
内容的提问来源于stack exchange,提问作者Shyam Naidu
相关产品推荐
相关产品推荐

