Заполните пропуски в датасете:
- Инициализируйте
SimpleImputer, чтобы инструмент менялNaNна моду. - Посчитайте моду на тренировочных данных с помощью
SimpleImputer. - Заполните пропуски в тестовых данных.
# импортируем библиотеки и объявляем константы
import pandas as pd
import numpy as np
from sklearn.preprocessing import OrdinalEncoder
from sklearn.impute import SimpleImputer
RANDOM_STATE = 42
# подготавливаем данные заранее созданной функцией
# в код добавили игнорирование неизвестных категорий при кодировании OHE
X_train, X_test, y_train, y_test = prepare_data('railway_full.csv')
# создаём список со строковыми категориями для кодирования OrdinalEncoder
cols_ordinal = [
'Оценка комфортности покупки билета онлайн', 'Оценка качества wifi'
]
# создаём экземпляр класса OrdinalEncoder для кодирования
# кодируем неизвестные категории пропусками
ordinal_encoder = OrdinalEncoder(
handle_unknown='use_encoded_value',
unknown_value=np.nan
)
# обучаем OrdinalEncoder на выбранных признаках из тренировочной выборки
# преобразовываем тренировочную выборку
X_train[cols_ordinal] = ordinal_encoder.fit_transform(X_train[cols_ordinal])
# преобразовываем тестовую выборку
X_test[cols_ordinal] = ordinal_encoder.transform(X_test[cols_ordinal])
# создайте экземпляр класса для заполнения пропусков на моду
imputer = SimpleImputer(
missing_values=np.nan,
strategy='most_frequent'
)
# посчитайте моду на тренировочной выборке
imputer.fit(X_train)
# заполните пропуск в тестовых данных на моду
X_test[imputer.feature_names_in_] = imputer.transform(X_test)
# выводим пропуски в данных
print(X_test.isna().sum())
Результат
Возраст 0
Расстояние 0
Покупка билета онлайн 0
Питание включено 0
Наличие wifi 0
Оценка комфортности места 0
Оценка качества уборки 0
Оценка качества обслуживания в пути 0
Оценка комфортности покупки билета онлайн 0
Оценка качества wifi 0
Оценка комфортности времени отправления/прибытия 0
Общая оценка качества предоставленной услуги 0
Пол_муж 0
Путешествует с детьми_нет 0
Путешествует по работе_нет 0
Тип_плацкарт 0
Тип_св 0
Оценка качества питания_отсутствует 0
Оценка качества питания_плохо 0
Оценка качества питания_хорошо 0
dtype: int64