Я пытаюсь сделать проект машинного обучения для начинающих Big Mart Sales. Набор данных этого проекта содержит много типов пропущенных значений (NaN) и значений, которые необходимо изменить (lf -> Low Fat, reg -> Regular и т. Д.)
Мой текущий подход к предварительной обработке этогоданные для создания импутера для каждого типа данных должны быть исправлены:
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 () требует двумерный массив в качестве входных данных, тогда как я хочу зафиксировать значения только в одном столбце (1D). Таким образом, я всегда должен использовать столбец, который я хочу исправить, плюс столбец рядом с ним в качестве входных данных. Есть ли другой способ обойти это? Спасибо.
Вот несколько строк моих данных: 