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

Python使用LinearRegression报could not convert string to float如何解决

错误原因

你的训练特征集x_train中包含格式为20140527T000000的ISO 8601类型日期字符串,而线性回归LinearRegression要求所有输入特征必须为数值类型,无法直接解析字符串类型数据,因此触发类型转换报错。

解决步骤
  • 第一步:定位日期特征列
    运行以下代码查看所有列的数据类型,找到类型为object的字符串日期列:
    print(x_train.dtypes)

  • 第二步:根据业务场景选择日期处理方案
    你可以从以下三种常用方案中选择适配的处理方式:

    1. 拆解为多维度时间数值特征
      适合日期本身和预测目标强相关的场景(比如预测销量、访问量等和时间周期相关的任务),可以将日期拆分为年、月、日、周几、季度等独立数值字段:
    import pandas as pd
    # 请将下方的'date_col'替换为你实际的日期列名
    x_train['date_col'] = pd.to_datetime(x_train['date_col'])
    x_train['year'] = x_train['date_col'].dt.year
    x_train['month'] = x_train['date_col'].dt.month
    x_train['day'] = x_train['date_col'].dt.day
    x_train['day_of_week'] = x_train['date_col'].dt.dayofweek
    # 处理完成后删除原始字符串日期列
    x_train = x_train.drop('date_col', axis=1)
    
    1. 转换为时间戳数值
      适合只需要体现日期先后顺序、不需要单独分析时间周期的场景,直接转换为1970年1月1日以来的秒级时间戳:
    import pandas as pd
    # 请将下方的'date_col'替换为你实际的日期列名
    x_train['date_col'] = pd.to_datetime(x_train['date_col'])
    x_train['timestamp'] = x_train['date_col'].apply(lambda x: x.timestamp())
    x_train = x_train.drop('date_col', axis=1)
    
    1. 直接删除日期列
      如果日期字段和你的预测目标没有业务关联,直接删除该列即可。
  • 第三步:同步处理测试集
    如果你后续需要用x_test做预测,必须对测试集的日期列执行完全相同的处理逻辑,避免出现特征维度不匹配的问题。


内容的提问来源于stack exchange,提问作者Sandesh shetty

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 01:54:04