Я немного запутался, у меня есть один горячий код моих категориальных столбцов для всех этих <10 уникальных значений <code>low_cardinality_cols, и я отбросил оставшиеся категориальные столбцы для данных обучения и проверки.
Теперь я хочу применить свою модель к новым данным в test.csv
. Каков наилучший метод предварительной обработки тестовых данных для соответствия формату поезда / проверки?
Мои опасения:
1. Test_data.csv, безусловно, будет иметь различную мощность для этих столбцов
2Если я один из тестовых данных с горячим кодированием, используя столбцы с низким количеством кардинальных единиц, я получаю Input contains NaN
, но мои столбцы с поездами, действительными и тестовыми значениями совпадают.
Пример одного горячего кодирования, приведенного ниже, предназначен для соревнований по kaggle. / промежуточный курс здесь
# Apply one-hot encoder to each column with categorical data
OH_encoder = OneHotEncoder(handle_unknown='ignore', sparse=False)
OH_cols_train = pd.DataFrame(OH_encoder.fit_transform(X_train[low_cardinality_cols]))
OH_cols_valid = pd.DataFrame(OH_encoder.transform(X_valid[low_cardinality_cols]))
# One-hot encoding removed index; put it back
OH_cols_train.index = X_train.index
OH_cols_valid.index = X_valid.index
# Remove categorical columns (will replace with one-hot encoding)
# This also saves us the hassle of dropping columns
num_X_train = X_train.drop(object_cols, axis=1)
num_X_valid = X_valid.drop(object_cols, axis=1)
# Add one-hot encoded columns to numerical features
OH_X_train = pd.concat([num_X_train, OH_cols_train], axis=1)
OH_X_valid = pd.concat([num_X_valid, OH_cols_valid], axis=1)