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

在Pipeline中使用SimpleImputer后仍出现LinearRegression NaN错误

解决方案:加州住房数据集Pipeline训练NaN错误排查

以下是针对你遇到问题的具体排查步骤和解决方法:

1. 修正模型训练方法

你当前使用lin_reg.fit_transform(housing,housing_labels)是错误的,fit_transform方法用于转换数据,训练模型应使用fit方法:

lin_reg.fit(housing, housing_labels)

若需获取预处理后的训练数据,可单独调用预处理步骤的transform方法:

preprocessed_housing = preprocessing.fit_transform(housing)

2. 处理比率计算中的除以0问题

column_ratio函数直接做除法时,若分母列(如total_rooms、households)存在0值,会生成inf(无穷大),后续经StandardScaler标准化会产生NaN。修改函数添加防除0逻辑:

def column_ratio(X):
    # 添加极小值避免除以0
    denominator = X[:, [1]] + 1e-6
    return X[:, [0]] / denominator

3. 统一缺失值处理配置

移除SimpleImputer中的missing_values=pd.NA参数,使用默认设置(自动识别np.nan和pd.NA),确保所有缺失值被正确匹配填充:

# 示例:修改ratio_pipeline定义
def ratio_pipeline():
    return make_pipeline(SimpleImputer(strategy='median'), 
                         FunctionTransformer(column_ratio, feature_names_out=ratio_name), 
                         StandardScaler())

4. 确保聚类特征输入无缺失值

尽管latitude和longitude通常无缺失值,仍可将ClusterSimilarity包装进含Imputer的Pipeline,避免潜在缺失值影响:

cluster_pipeline = make_pipeline(SimpleImputer(strategy='median'), 
                                 ClusterSimilarity(n_clusters=10, gamma=1., random_state=69))
# 替换ColumnTransformer中原cluster_simil的位置
preprocessing=ColumnTransformer([
    ("bedrooms_per_room",ratio_pipeline(),["total_bedrooms","total_rooms"]),
    ("rooms_per_house",ratio_pipeline(),["total_rooms","households"]),
    ("people_per_house",ratio_pipeline(),["population","households"]),
    ("log",log_pipeline,["total_bedrooms","total_rooms","population","households","median_income"]),
    ("coordinates_adjustments",cluster_pipeline,["latitude","longitude"]),
    ("cat",cat_pipeline,make_column_selector(dtype_include=object))
],remainder=default_num_pipeline)

5. 验证预处理结果

训练前先检查预处理后的数据是否存在NaN或inf,定位问题源头:

preprocessed_data = preprocessing.fit_transform(housing)
print("是否存在NaN:", np.isnan(preprocessed_data).any())
print("是否存在无穷大:", np.isinf(preprocessed_data).any())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 21:58:13