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

如何用Python及scikit-learn替换线性回归因变量y的缺失值为均值?

我来帮你搞定这两个关于因变量y缺失值处理的问题,直接上干货:

问题1:使用scikit-learn(sklearn),如何处理线性回归中的因变量y的缺失数据?

处理因变量y的缺失值和处理特征X的逻辑是一致的,不过要注意y一般是一维数组,而SimpleImputer默认处理二维数据,所以我们需要先把y转换成二维格式,处理完再转回一维。这里是调整后的完整代码:

import numpy as np
import pandas as pd
from sklearn.impute import SimpleImputer

# 加载数据集
dataset = pd.read_csv('Data-hw1.csv')
X = dataset.iloc[:, :-1].values  # 提取特征变量
y = dataset.iloc[:, -1].values   # 提取因变量y

# 处理y中的缺失值
# 先把一维的y转为二维数组(因为SimpleImputer要求输入是二维)
y = y.reshape(-1, 1)
imputer_y = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer_y.fit(y)
y = imputer_y.transform(y).flatten()  # 转回一维数组

# 如果你同时需要处理X的缺失值,保留原代码即可
imputer_x = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer_x.fit(X[:,1:3])
X[:,1:3] = imputer_x.transform(X[:,1:3])

print("处理后的特征X:")
print(X)
print("\n处理后的因变量y:")
print(y)

关键步骤说明:

  • 用reshape(-1, 1)把一维的y转换成列向量(二维),满足SimpleImputer的输入要求
  • 处理完成后用flatten()转回一维数组,方便后续线性回归模型的输入

问题2:如何在Python中将因变量y中的缺失数据替换为均值?

这里有两种常用的方法,根据你的习惯选就行:

方法1:使用scikit-learn的SimpleImputer

和问题1的处理逻辑一致,核心就是用均值策略填充缺失值,单独提炼的代码如下:

import numpy as np
from sklearn.impute import SimpleImputer

# 假设y是包含缺失值的一维数组
y = np.array([2.5, np.nan, 3.2, 4.1, np.nan, 5.0])

# 转换为二维并填充均值
y_imputed = SimpleImputer(strategy='mean').fit_transform(y.reshape(-1, 1)).flatten()
print("填充后的y:", y_imputed)

方法2:使用pandas的fillna(更简洁)

如果你的数据是用pandas的Series存储的,用fillna方法会更直观,不需要折腾数组维度:

import pandas as pd
import numpy as np

# 加载数据集后提取y为Series
dataset = pd.read_csv('Data-hw1.csv')
y = dataset.iloc[:, -1]

# 用均值填充缺失值
y_imputed = y.fillna(y.mean())
print("填充后的y:")
print(y_imputed)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 23:43:15