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

含NaN值的Latitude列致回归预测报错,如何修复?

解决线性回归模型因NaN值报错的方案

报错核心是Latitude列存在NaN值,而sklearn的LinearRegression无法处理含缺失值的输入数据,以下是两种可行解决方法:

方法一:填充缺失值(推荐,避免丢失样本)

用训练集的统计特征(如均值、中位数)填充NaN值,注意必须用训练集的统计量填充验证集,防止数据泄露:

# 计算训练集Latitude的均值
train_lat_mean = X_train['Latitude'].mean()

# 填充训练集和验证集的NaN值
X_train['Latitude'] = X_train['Latitude'].fillna(train_lat_mean)
X_vali['Latitude'] = X_vali['Latitude'].fillna(train_lat_mean)

# 提取特征
feature3 = ['Panel_Capacity', 'Solar_age', 'Panel_Capacity * Solar_age', 'Financed_Yes', 'Panel_Capacity*Financed_Yes','Latitude']
x3_train = X_train[feature3].to_numpy()
y3_train = y_train

from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error as mse

# 训练模型
model3 = LinearRegression()
model3.fit(x3_train, y3_train)

# 计算残差(修正原代码笔误:fitted2改为fitted3)
fitted3 = model3.predict(x3_train)
res3 = y3_train - fitted3

# 验证集预测与MSE计算
x3_vali = X_vali[feature3].to_numpy()
m3_generation_pred = model3.predict(x3_vali)
m3_vali_mse = mse(y_vali, m3_generation_pred)
print(m3_vali_mse)

如果Latitude是偏态分布,可改用中位数X_train['Latitude'].median()填充。

方法二:删除含缺失值的样本

若Latitude列的NaN样本占比极低、数据量充足,可直接删除这些样本:

# 删除训练集中Latitude含NaN的行
X_train_clean = X_train.dropna(subset=['Latitude'])
y_train_clean = y_train.loc[X_train_clean.index]

# 删除验证集中Latitude含NaN的行
X_vali_clean = X_vali.dropna(subset=['Latitude'])
y_vali_clean = y_vali.loc[X_vali_clean.index]

# 提取特征
feature3 = ['Panel_Capacity', 'Solar_age', 'Panel_Capacity * Solar_age', 'Financed_Yes', 'Panel_Capacity*Financed_Yes','Latitude']
x3_train = X_train_clean[feature3].to_numpy()
y3_train = y_train_clean

# 训练模型
model3 = LinearRegression()
model3.fit(x3_train, y3_train)

# 计算残差
fitted3 = model3.predict(x3_train)
res3 = y3_train - fitted3

# 验证集预测与MSE计算(使用清理后的验证集)
x3_vali = X_vali_clean[feature3].to_numpy()
m3_generation_pred = model3.predict(x3_vali)
m3_vali_mse = mse(y_vali_clean, m3_generation_pred)
print(m3_vali_mse)

额外注意

原代码存在笔误:res3 = y3_train - fitted2中的fitted2应为fitted3,否则会出现变量未定义报错,上述修正代码已同步修复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 06:03:32