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

拟合LinearRegression模型时遇“无法将字符串转为float”错误求助

解决LinearRegression拟合时的字符串转数值错误

问题核心分析

错误提示ValueError: could not convert string to float: 'YES'说明数据中仍存在未被转换为数值类型的字符串列,和uint8类型无关——uint8是生成虚拟变量后常见的内存优化类型(比如pd.get_dummies默认生成),scikit-learn的LinearRegression完全支持这种数值类型,无需额外转换。

具体解决步骤

  1. 定位未处理的字符串列
    先找出所有字符串类型(object)的列,执行代码:

    # 输出所有object类型的列名
    print(df.select_dtypes(include=['object']).columns)
    

    这会帮你定位到包含'YES'这类字符串的目标列。

  2. 转换字符串列为数值类型

    • 若为二元分类列(仅含YES/NO两类值):直接映射转换
      # 替换成你的目标列名
      df['target_col'] = df['target_col'].map({'YES': 1, 'NO': 0})
      
    • 若为多分类列:用虚拟变量(独热编码)处理
      # 对所有object列生成虚拟变量,drop_first避免多重共线性
      df = pd.get_dummies(df, columns=df.select_dtypes(include=['object']).columns, drop_first=True)
      
  3. 重新拟合模型
    处理完所有字符串列后,重新准备特征矩阵并拟合:

    X_multi = df.drop('price', axis=1)
    y_multi = df['price']
    model1 = LinearRegression()
    model1.fit(X_multi, y_multi)
    
  4. 额外检查:缺失值处理完整性
    虽然已填充n_hos_beds的缺失值,建议确认所有列的缺失情况:

    print(df.isnull().sum())
    

    若存在其他缺失值,根据列类型用均值、中位数或众数填充。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 16:57:06