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

泰坦尼克号生存预测模型训练报ValueError错误如何解决?

报错根因

你触发的ValueError: Input contains NaN, infinity or a value too large for dtype('float64')是scikit-learn模型的输入校验规则导致的:sklearn绝大多数分类模型原生不支持输入数据中存在缺失值(NaN)、无穷值(inf/-inf)或者超出float64存储范围的极值,你当前传入的训练集x_train中存在上述异常值。

解决步骤
  • 第一步:定位异常值
    先运行以下代码定位异常值的分布:
    import numpy as np
    # 查看各特征缺失值数量
    print(x_train.isnull().sum())
    # 查看各特征无穷值数量
    print(x_train.isin([np.inf, -np.inf]).sum())
    
    泰坦尼克号公开数据集中常见存在缺失的特征为Age、Cabin、Embarked三个字段。
  • 第二步:处理无穷值(如果存在)
    如果排查出有inf值,先统一替换为NaN后续统一处理:
    x_train.replace([np.inf, -np.inf], np.nan, inplace=True)
    
  • 第三步:处理缺失值
    可根据特征类型选择对应的填充策略:
    • 缺失率超过60%的特征(比如Cabin字段缺失率通常在77%左右)直接删除:
      x_train.drop('Cabin', axis=1, inplace=True)
      
    • 数值型特征(比如Age)用中位数/均值填充:
      x_train['Age'] = x_train['Age'].fillna(x_train['Age'].median())
      
    • 类别型特征(比如Embarked)用众数填充:
      x_train['Embarked'] = x_train['Embarked'].fillna(x_train['Embarked'].mode()[0])
      
    多特征批量填充也可以使用sklearn自带的SimpleImputer工具:
    from sklearn.impute import SimpleImputer
    # 数值特征填充示例,类别特征可将strategy改为'most_frequent'
    imputer = SimpleImputer(strategy='median')
    x_train = imputer.fit_transform(x_train)
    
  • 第四步:校验处理结果
    处理完成后运行以下代码确认无异常值,输出为True即可正常训练模型:
    print(np.isfinite(x_train).all())
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:45:08