12311k

Untitled

Mar 2nd, 2020
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.77 KB | None | 0 0
  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.preprocessing import StandardScaler
  6. from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
  7.  
  8. # прочитаем из csv-файла данные о параметрах сетей и их устойчивости
  9. electrical_grid = pd.read_csv('/datasets/Electrical_Grid_Stability.csv', sep = ';')
  10. print('Размер датасета:', electrical_grid.shape)
  11. electrical_grid.head()
  12.  
  13. # посмотрим, как соотносятся классы набора данных
  14. print('Соотношение классов:\n', electrical_grid['stability'].value_counts())
  15.  
  16. # разделим наши данные на признаки (матрица X) и целевую переменную (y)
  17. X = electrical_grid.drop('stability', axis = 1)
  18. y = electrical_grid['stability']
  19.  
  20. # разделяем модель на обучающую и валидационную выборку
  21. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
  22.  
  23. # зададим алгоритм для нашей модели
  24. model = LogisticRegression()
  25.  
  26. # обучим модель
  27. model.fit(X_train, y_train)
  28.  
  29. # воспользуемся уже обученной моделью, чтобы сделать прогнозы
  30. probabilities = model.predict_proba(X_test)[:,1]
  31.  
  32. # бинарный прогноз
  33. predictions = model.predict(X_test)
  34.  
  35. # выведите все изученные метрики для полученного прогноза
  36. print('Метрики при автоматическом прогнозе с помощью predict')
  37. print('Accuracy: {:.2f}'.format(accuracy_score(y_test, predictions)))
  38. print('Precision: {:.2f}'.format(precision_score(y_test, predictions)))
  39. print('Recall: {:.2f}'.format(recall_score(y_test, predictions)))
  40. print('F1: {:.2f}\n'.format(f1_score(y_test, predictions)))
  41.  
  42. # задайте порог
  43. threshold = 0.4
  44.  
  45. # на основании вероятностей и соотношения классов рассчитайте predict
  46. custom_predictions = [0 if i<threshold else 1 for i in probabilities]
  47.  
  48. # выведите все изученные метрики для прогноза по новому порогу
  49. print('Метрики для прогноза с кастомным порогом')
  50. print('Accuracy for custom: {:.2f}'.format(accuracy_score(y_test, custom_predictions)))
  51. print('Precision for custom: {:.2f}'.format(precision_score(y_test, custom_predictions)))
  52. print('Recall for custom: {:.2f}'.format(recall_score(y_test, custom_predictions)))
  53. print('F1 for custom: {:.2f}'.format(f1_score(y_test, custom_predictions)))
Advertisement
Add Comment
Please, Sign In to add comment