Guest User

Untitled

a guest
Feb 27th, 2020
182
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import pandas as pd
  2.  
  3. from sklearn.model_selection import train_test_split
  4. from sklearn.linear_model import LogisticRegression
  5. from sklearn.tree import DecisionTreeClassifier
  6. from sklearn.preprocessing import StandardScaler
  7.  
  8. from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier
  9.  
  10. from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
  11. from sklearn.metrics import roc_auc_score
  12.  
  13. from sklearn.ensemble import RandomForestRegressor
  14. from sklearn.ensemble import GradientBoostingRegressor
  15.  
  16. # определим функцию, которая будет выводить наши метрики
  17. def print_all_metrics(y_true, y_pred, y_proba, title = 'Метрики классификации'):
  18. print(title)
  19. print('\tAccuracy: {:.2f}'.format(accuracy_score(y_true, y_pred)))
  20. print('\tPrecision: {:.2f}'.format(precision_score(y_true, y_pred)))
  21. print('\tRecall: {:.2f}'.format(recall_score(y_true, y_pred)))
  22. print('\tF1: {:.2f}'.format(f1_score(y_true, y_pred)))
  23. print('\tROC_AUC: {:.2f}'.format(roc_auc_score(y_true, y_proba)))
  24.  
  25. # прочитаем из csv-файла данные о параметрах сетей и их устойчивости
  26. electrical_grid = pd.read_csv('/datasets/Electrical_Grid_Stability.csv', sep = ';')
  27. print('Размер датасета:', electrical_grid.shape)
  28. electrical_grid.head()
  29.  
  30. # посмотрим, как соотносятся классы для нашего набора данных
  31. electrical_grid['stability'].value_counts()
  32.  
  33. # разделим наши данные на признаки (матрица X) и целевую переменную (y)
  34. X = electrical_grid.drop('stability', axis = 1)
  35. y = electrical_grid['stability']
  36.  
  37. # разделяем модель на обучающую и валидационную выборку
  38. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
  39.  
  40. # обучите StandartScaler на обучающей выборке
  41. scaler = StandardScaler()
  42. scaler.fit(X_train)
  43.  
  44. # Преобразуйте обучающий и валидационные наборы данных
  45. X_train_st = scaler.transform(X_train)
  46. X_test_st = scaler.transform(X_test)
  47.  
  48. # зададим алгоритм для модели логистической регрессии
  49. lr_model = LogisticRegression()
  50. # обучим модель
  51. lr_model.fit(X_train_st, y_train)
  52. # воспользуемся уже обученной моделью, чтобы сделать прогнозы
  53. lr_predictions = lr_model.predict(X_test_st)
  54. lr_probabilities = lr_model.predict_proba(X_test_st)[:,1]
  55. # выведем все метрики
  56. print_all_metrics(y_test, lr_predictions, lr_probabilities , title='Метрики для модели логистической регрессии:')
  57.  
  58.  
  59.  
  60. # зададим алгоритм для новой модели на основе алгоритма решающего дерева
  61. tree_model = DecisionTreeClassifier()
  62. # обучим модель решающего дерева
  63. tree_model.fit(X_train_st, y_train)
  64. # воспользуемся уже обученной моделью, чтобы сделать прогнозы
  65. tree_predictions = tree_model.predict(X_test_st)
  66. tree_probabilities = tree_model.predict_proba(X_test_st)[:,1]
  67. # выведем все метрики
  68. print_all_metrics(y_test, tree_predictions, tree_probabilities, title='Метрики для модели дерева решений:')
  69.  
  70.  
  71. # зададим алгоритм для новой модели на основе алгоритма случайного леса
  72. rf_model = RandomForestRegressor(n_estimators = 100, random_state = 0) # Ваш код здесь
  73. # обучим модель случайного леса
  74. rf_model.fit(X_train_st, y_train)
  75. # воспользуемся уже обученной моделью, чтобы сделать прогнозы
  76. rf_predictions = rf_model.predict(X_test_st)# Ваш код здесь
  77. rf_probabilities = rf_model.predict_proba(X_test_st)[:,1] # Ваш код здесь
  78. # выведем все метрики
  79. print_all_metrics(y_test, rf_predictions, rf_probabilities, title = 'Метрики для модели случайного леса:')
  80.  
  81.  
  82. # сделаем все то же самое для алгоритма градиентного бустинга
  83. gb_model = GradientBoostingRegressor(n_estimators = 100, random_state = 0)
  84. # обучим модель случайного леса
  85. gb_model.fit(X_train_st, y_train)
  86. # воспользуемся уже обученной моделью, чтобы сделать прогнозы
  87. gb_predictions = gb_model.predict(X_test_st)
  88. gb_probabilities = gb_model.predict_proba(X_test_st)[:,1]
  89.  
  90. # выведем все метрики
  91. print_all_metrics(y_test, gb_predictions, gb_probabilities,title = 'Метрики для модели градиентного бустинга:')
RAW Paste Data