Я тренирую модель машинного обучения, чтобы предсказать цену здания.
Одна из колонок - в каком городе находится здание. У меня много городов
Unincorporated County 244550
Miami 91486
Miami Beach 39880
Hialeah 35439
Doral 20118
Miami Gardens 18031
Aventura 18011
Homestead 16472
Sunny Isles Beach 13587
Coral Gables 13365
North Miami 10843
Cutler Bay 10734
North Miami Beach 9592
Miami Lakes 6986
Palmetto Bay 6039
Key Biscayne 5170
Pinecrest 4575
Hialeah Gardens 4295
South Miami 2864
Sweetwater 2811
Bal Harbour 2794
North Bay Village 2767
Miami Shores 2764
Miami Springs 2689
Opa-locka 2632
Surfside 2401
Bay Harbor Islands 2031
Florida City 1924
West Miami 921
Biscayne Park 717
Medley 708
El Portal 522
Virginia Gardens 370
Golden Beach 283
Indian Creek 24
Здесь вы можете видеть значение value_counts () столбца города, насколько я понимаю, примеров достаточно, чтобы включить его в модель.
Проблема возникает, когда я хочу разделить модель на x_train и x_test или выполнить cross_validation. Когда я разделяю набор данных с помощью:
X_train, X_test, y_train, y_test = train_test_split(
df_x, df_y,
test_size=0.33, random_state=180
)
или я выполняю перекрестную проверку:
score2 = cross_validate(estimator_pipeline, X= df_x, y= df_y,
scoring=scoring,return_train_score=False, cv=5,n_jobs=2)
, я получаю эту ошибку:
Found unknown categories ['El Portal', 'Florida city, 'Medley'] in column 1 during transform
Как я понимаю о ошибка в том, что это проблема одного горячего кодировщика, потому что он принимает каждое значение столбца city и создает новый столбец для каждого города, но когда он разделяется между x_train и x_test, он делает это перед одним горячим кодером, а затем в раздел поезда занимает несколько городов, но в тестовом разделе не следует использовать один и тот же город.
Стоит ли использовать один горячий кодировщик или pd.get_dummies () перед разделом, или есть лучший способ разделить набор данных, чтобы взять города, те же города в железнодорожном и тестовом разделе?