У меня есть следующий код для быстрого кодирования 2 столбцов, которые у меня есть.
# encode city labels using one-hot encoding scheme
city_ohe = OneHotEncoder(categories='auto')
city_feature_arr = city_ohe.fit_transform(df[['city']]).toarray()
city_feature_labels = city_ohe.categories_
city_features = pd.DataFrame(city_feature_arr, columns=city_feature_labels)
phone_ohe = OneHotEncoder(categories='auto')
phone_feature_arr = phone_ohe.fit_transform(df[['phone']]).toarray()
phone_feature_labels = phone_ohe.categories_
phone_features = pd.DataFrame(phone_feature_arr, columns=phone_feature_labels)
Что мне интересно, так это то, как я делаю это в 4 строки, получая при этом правильные имена столбцов в выходных данных. То есть я могу создать должным образом горячий кодированный массив, включив имена обоих столбцов в fit_transform
, но когда я пытаюсь назвать столбцы результирующего информационного кадра, он говорит мне, что существует несоответствие между формой индексов:
ValueError: Shape of passed values is (6, 50000), indices imply (3, 50000)
Для фона у телефона и города есть 3 значения.
city phone
0 CityA iPhone
1 CityB Android
2 CityB iPhone
3 CityA iPhone
4 CityC Android