Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Константы и глобальные переменные
- STATE = 5962 # значение для параметра random_state
- CV = 3 # кол-во фолдов для кросс-валидации
- RESULTS = [] # общий список для вывода
- # функция, кстати, я как основу я брала как раз ТВОЮ функцию, что ты кидала
- def best_model_with_pipe(model, params, features_train, target_train, title, list_num, list_cat):
- '''
- Функция для подбора наилучших гиперпараметров модели с использованием pipeline. Обучает модель на обучающем наборе данных,
- возвращает лучшие: модель, параметры и метрику качества (ROC-AUC). Дополнительно формирует список для отчёта
- по работе различных моделей.
- '''
- num_features = list_num
- cat_features = list_cat
- preprocessor_model = ColumnTransformer(
- transformers=[
- ('num_imputer', SimpleImputer(strategy='median'), num_features),
- ('cat_encoder', OrdinalEncoder(), cat_features)], remainder='passthrough')
- pipeline_model = Pipeline(
- steps=[
- ('preprocessor', preprocessor_model),
- ('model', model)
- ])
- gs_model = GridSearchCV(pipeline_model,
- param_grid=params,
- scoring='roc_auc',
- cv=CV,
- verbose=10,
- n_jobs=-1)
- gs_model.fit(features_train, target_train)
- best_model = gs_model.best_estimator_
- best_params = gs_model.best_params_
- best_score = gs_model.best_score_
- RESULTS.append({'model_name': title,
- 'model': gs_model.best_estimator_,
- 'model_params': gs_model.best_params_,
- 'ROC-AUC': gs_model.best_score_})
- return best_model, best_params, best_score
- # пример вызова функции
- lgbm_model_pipe = LGBMClassifier(random_state=STATE, class_weight='balanced')
- lgbm_params_pipe = {'model__n_estimators': np.arange(30, 101, 10),
- 'model__max_depth': np.arange(12, 25, 3)}
- best_model_with_pipe(lgbm_model_pipe, lgbm_params_pipe, X, y, 'LGBM', numerical_features, categorical_features)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement