Агентство недвижимости добавило два новых категориальных признака в датасет:

  • building_type — тип строительного материала;
  • parking_place — наличие парковочного места.

Кодируйте категориальные признаки в тренировочных данных с помощью OneHotEncoder(). Дамми-ловушку устранять не нужно. Выведите на экран подготовленные данные.

import pandas as pd
 
from sklearn.model_selection import train_test_split
 
# импортируйте класс для прямого кодирования
from sklearn.preprocessing import OneHotEncoder
 
# создание константы RANDOM_STATE
RANDOM_STATE = 42
 
# добавляем данные из CSV-файла в датафрейм pandas, делим датасет на выборки
df = pd.read_csv('real_estate_clean_cat.csv')
X = df.drop('price', axis=1)
y = df['price']
 
X_train, X_test, y_train, y_test = train_test_split(
    X, 
    y, 
    random_state=RANDOM_STATE
)
 
# выберите класс OneHotEncoder() для кодирования 
# задайте параметру sparse значение False
encoder = OneHotEncoder(sparse=False)
 
# список всех категориальных признаков из тренировочной выборки
cat_col_names = ['building_type',	'parking_place']
 
# обучите и преобразуйте категориальные признаки из тренировочной выборки 
# сделайте это одной командой
X_train_ohe = encoder.fit_transform(X_train[cat_col_names])
 
# сохраните в переменной encoder_col_names названия новых столбцов 
encoder_col_names = encoder.get_feature_names()
 
# создайте датафрейм из закодированных данных
# передайте названия столбцов из переменной encoder_col_names
df_ohe = pd.DataFrame(X_train_ohe, columns=encoder_col_names)
 
# выведите пять первых строк из датафрейма на экран
print(df_ohe.head())