Я пытался научиться использовать конвейеры и ColumnTransformer для эффективной предварительной обработки данных перед регрессией. Вот моя попытка:
def preprocess_data(X):
cat_var = X.select_dtypes(['bool','object']).columns
num_var = X.select_dtypes(['int64','float64']).columns
steps = [('c', Pipeline(steps=[('s',SimpleImputer(strategy='most_frequent')),
('oe',OneHotEncoder(handle_unknown='ignore'))]), cat_var),
('n', SimpleImputer(strategy='median'), num_var)]
transformer = ColumnTransformer(transformers=steps, remainder='passthrough')
X = transformer.fit_transform(X=X)
return X
Проблема в том, что когда я трансформирую наборы данных для поезда и тестирования, он выбирает другое количество (Меньше) столбцов для тестового набора данных. Это означает, что модель, которую я обучил, не будет работать с тестовыми данными.
Я хорошо отредактировал код, и нет утечки данных или связанных с этим проблем
В чем может быть причина этого? Есть ли неисправность в моем logi c?
Я использую следующий набор данных
Спасибо!
Решение: также верните трансформатор как предварительно обработанные данные.
return X, transformer
Затем используйте объект-преобразователь для преобразования тестовых данных перед прогнозами