Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pandas as pd
- from sklearn.model_selection import train_test_split
- from sklearn.linear_model import LogisticRegression
- from sklearn.tree import DecisionTreeClassifier
- from sklearn.preprocessing import StandardScaler
- from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier
- from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
- from sklearn.metrics import roc_auc_score
- from sklearn.ensemble import RandomForestRegressor
- from sklearn.ensemble import GradientBoostingRegressor
- # определим функцию, которая будет выводить наши метрики
- def print_all_metrics(y_true, y_pred, y_proba, title = 'Метрики классификации'):
- print(title)
- print('\tAccuracy: {:.2f}'.format(accuracy_score(y_true, y_pred)))
- print('\tPrecision: {:.2f}'.format(precision_score(y_true, y_pred)))
- print('\tRecall: {:.2f}'.format(recall_score(y_true, y_pred)))
- print('\tF1: {:.2f}'.format(f1_score(y_true, y_pred)))
- print('\tROC_AUC: {:.2f}'.format(roc_auc_score(y_true, y_proba)))
- # прочитаем из csv-файла данные о параметрах сетей и их устойчивости
- electrical_grid = pd.read_csv('/datasets/Electrical_Grid_Stability.csv', sep = ';')
- print('Размер датасета:', electrical_grid.shape)
- electrical_grid.head()
- # посмотрим, как соотносятся классы для нашего набора данных
- electrical_grid['stability'].value_counts()
- # разделим наши данные на признаки (матрица X) и целевую переменную (y)
- X = electrical_grid.drop('stability', axis = 1)
- y = electrical_grid['stability']
- # разделяем модель на обучающую и валидационную выборку
- X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
- # обучите StandartScaler на обучающей выборке
- scaler = StandardScaler()
- scaler.fit(X_train)
- # Преобразуйте обучающий и валидационные наборы данных
- X_train_st = scaler.transform(X_train)
- X_test_st = scaler.transform(X_test)
- # зададим алгоритм для модели логистической регрессии
- lr_model = LogisticRegression()
- # обучим модель
- lr_model.fit(X_train_st, y_train)
- # воспользуемся уже обученной моделью, чтобы сделать прогнозы
- lr_predictions = lr_model.predict(X_test_st)
- lr_probabilities = lr_model.predict_proba(X_test_st)[:,1]
- # выведем все метрики
- print_all_metrics(y_test, lr_predictions, lr_probabilities , title='Метрики для модели логистической регрессии:')
- # зададим алгоритм для новой модели на основе алгоритма решающего дерева
- tree_model = DecisionTreeClassifier()
- # обучим модель решающего дерева
- tree_model.fit(X_train_st, y_train)
- # воспользуемся уже обученной моделью, чтобы сделать прогнозы
- tree_predictions = tree_model.predict(X_test_st)
- tree_probabilities = tree_model.predict_proba(X_test_st)[:,1]
- # выведем все метрики
- print_all_metrics(y_test, tree_predictions, tree_probabilities, title='Метрики для модели дерева решений:')
- # зададим алгоритм для новой модели на основе алгоритма случайного леса
- rf_model = RandomForestRegressor(n_estimators = 100, random_state = 0) # Ваш код здесь
- # обучим модель случайного леса
- rf_model.fit(X_train_st, y_train)
- # воспользуемся уже обученной моделью, чтобы сделать прогнозы
- rf_predictions = rf_model.predict(X_test_st)# Ваш код здесь
- rf_probabilities = rf_model.predict_proba(X_test_st)[:,1] # Ваш код здесь
- # выведем все метрики
- print_all_metrics(y_test, rf_predictions, rf_probabilities, title = 'Метрики для модели случайного леса:')
- # сделаем все то же самое для алгоритма градиентного бустинга
- gb_model = GradientBoostingRegressor(n_estimators = 100, random_state = 0)
- # обучим модель случайного леса
- gb_model.fit(X_train_st, y_train)
- # воспользуемся уже обученной моделью, чтобы сделать прогнозы
- gb_predictions = gb_model.predict(X_test_st)
- gb_probabilities = gb_model.predict_proba(X_test_st)[:,1]
- # выведем все метрики
- print_all_metrics(y_test, gb_predictions, gb_probabilities,title = 'Метрики для модели градиентного бустинга:')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement