【发布时间】:2020-02-07 11:26:24
【问题描述】:
我正在尝试执行初学者机器学习项目 Big Mart Sales。 本项目的数据集包含多种类型的缺失值(NaN),以及需要改变的值(lf -> Low Fat, reg -> Regular等)
我目前预处理这些数据的方法是为需要修复的每种类型的数据创建一个 imputer:
from sklearn.impute import SimpleImputer as Imputer
# make the values consistent
lf_imputer = Imputer(missing_values='LF', strategy='constant', fill_value='Low Fat')
lowfat_imputer = Imputer(missing_values='low fat', strategy='constant', fill_value='Low Fat')
X[:,1:2] = lf_imputer.fit_transform(X[:,1:2])
X[:,1:2] = lowfat_imputer.fit_transform(X[:,1:2])
# nan for a categorical variable
nan_imputer = Imputer(missing_values=np.nan, strategy='most_frequent')
X[:, 7:8] = nan_imputer.fit_transform(X[:, 7:8])
# nan for a numerical variable
nan_num_imputer = Imputer(missing_values=np.nan, strategy='mean')
X[:, 0:1] = nan_num_imputer.fit_transform(X[:, 0:1])
但是,这种方法非常麻烦。有没有更好的方法来预处理这个数据集?
此外,令人沮丧的是 imputer.fit_transform() 需要一个 2D 数组作为输入,而我只想将这些值固定在单个列 (1D) 中。因此,我总是必须使用要修复的列以及旁边的列作为输入。有没有其他方法可以解决这个问题?谢谢。
【问题讨论】:
-
你能把你的数据框的几行放到这篇文章中吗?你只有数字数据吗?
-
是的,我已经编辑了帖子并添加了我的数据截图。
标签: python-3.x machine-learning scikit-learn spyder imputation