首页 > 解决方案 > Scikit-learn Imputer 使用两次时会减少尺寸

问题描述

我理解:“当axis = 0时,仅包含适合缺失值的列在转换时被丢弃。” 所以我第一次使用 Imputer 时,所有 NaN 值都被平均值替换,并且只包含缺失值的列被替换。我的代码:

df.shape
(1430,488)

#1. delete all columns containing 0
df=df.loc[:, (df != 0).any(axis=0)]
df.shape
(1430,370)

#2. replace all Nan Values with mean
from sklearn.preprocessing import Imputer
imr = Imputer(missing_values='NaN', strategy='mean', axis=0)
imr = imr.fit(df)
imputed_data = imr.transform(df.values)
imputed_data.shape
(1430,321)

#3. replace all 0 Values with mean
from sklearn.preprocessing import Imputer
imr = Imputer(missing_values=0, strategy='mean', axis=0)
imr = imr.fit(df)
imputed_data = imr.transform(df.values)
imputed_data.shape
(1430,167)

因此,在第一步中,我删除了所有包含 0 的列,然后在第 2 步中,估算器删除了所有仅包含 NaN 的列。但是为什么在第 3 步到 167 列时会减少维度呢?我已经在步骤 1 中删除了所有只有 0 的列?

另一个问题是如何在不丢失标题的情况下将新的 numpy 数组转换回 pandas?

谢谢你,R

标签: pythonscikit-learndimension

解决方案


推荐阅读