Advertisement
vishneva_olga

Untitled

Oct 20th, 2023
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.68 KB | None | 0 0
  1. # Константы и глобальные переменные
  2.  
  3. STATE = 5962 # значение для параметра random_state
  4. CV = 3 # кол-во фолдов для кросс-валидации
  5.  
  6. RESULTS = [] # общий список для вывода
  7.  
  8. # функция, кстати, я как основу я брала как раз ТВОЮ функцию, что ты кидала
  9.  
  10. def best_model_with_pipe(model, params, features_train, target_train, title, list_num, list_cat):
  11.     '''
  12.    Функция для подбора наилучших гиперпараметров модели с использованием pipeline. Обучает модель на обучающем наборе данных,
  13.    возвращает лучшие: модель, параметры и метрику качества (ROC-AUC). Дополнительно формирует список для отчёта
  14.    по работе различных моделей.
  15.    '''
  16.    
  17.     num_features = list_num
  18.     cat_features = list_cat
  19.        
  20.     preprocessor_model = ColumnTransformer(
  21.                                     transformers=[
  22.                                         ('num_imputer', SimpleImputer(strategy='median'), num_features),
  23.                                         ('cat_encoder', OrdinalEncoder(), cat_features)], remainder='passthrough')
  24.        
  25.     pipeline_model = Pipeline(
  26.                             steps=[
  27.                                 ('preprocessor', preprocessor_model),
  28.                                 ('model', model)
  29.                                     ])
  30.    
  31.     gs_model = GridSearchCV(pipeline_model,
  32.                             param_grid=params,
  33.                             scoring='roc_auc',
  34.                             cv=CV,
  35.                             verbose=10,
  36.                             n_jobs=-1)
  37.        
  38.     gs_model.fit(features_train, target_train)  
  39.    
  40.     best_model = gs_model.best_estimator_
  41.     best_params = gs_model.best_params_
  42.     best_score = gs_model.best_score_
  43.    
  44.     RESULTS.append({'model_name': title,
  45.                     'model': gs_model.best_estimator_,
  46.                     'model_params': gs_model.best_params_,
  47.                     'ROC-AUC': gs_model.best_score_})
  48.    
  49.     return best_model, best_params, best_score
  50.  
  51. # пример вызова функции
  52.  
  53. lgbm_model_pipe = LGBMClassifier(random_state=STATE, class_weight='balanced')
  54. lgbm_params_pipe = {'model__n_estimators': np.arange(30, 101, 10),
  55.                     'model__max_depth': np.arange(12, 25, 3)}
  56.  
  57. 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