python - 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
解决方案
推荐阅读
- python - Python RegEx 代码检测句子中的特定特征
- php - 与来自对象的值相比,PHP 创建唯一值
- c# - 使用指南针和加速度计在 Unity 中模拟陀螺仪
- apache-spark - AWS EMR Spark 作业重新启动 [AsyncEventQueue: Dropping event from queue appStatus.]
- sql - 如何将当前日期插入电子邮件 SQL Server 的主题行
- elasticsearch - Elasticsearch:无论变音符号/口音如何,都返回相同的搜索结果
- javascript - 使用 React 和 JavaScript 应用无限滚动
- typescript - 在 Redux 存储中保持用户界面状态的好处?
- apache - Apache 重写:如何将重写应用于先前重写修改的结果
- java - GL_POINTS 画一个圆