AliaksandrLet

Дерево принятия решений

Jan 11th, 2023 (edited)
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.34 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.tree import DecisionTreeClassifier
  6. from sklearn.preprocessing import StandardScaler
  7.  
  8. from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
  9. from sklearn.metrics import roc_auc_score
  10.  
  11. # прочитаем из csv-файла данные о параметрах сетей и их устойчивости
  12. electrical_grid = pd.read_csv(
  13.     '/datasets/Electrical_Grid_Stability.csv', sep=';'
  14. )
  15. print('Размер датасета:', electrical_grid.shape)
  16. electrical_grid.head()
  17.  
  18. # посмотрим, как соотносятся классы для нашего набора данных
  19. electrical_grid['stability'].value_counts()
  20.  
  21. # разделим наши данные на признаки (матрица X) и целевую переменную (y)
  22. X = electrical_grid.drop('stability', axis=1)
  23. y = electrical_grid['stability']
  24.  
  25. # разделяем модель на обучающую и валидационную выборку
  26. X_train, X_test, y_train, y_test = train_test_split(
  27.     X, y, test_size=0.2, random_state=0
  28. )
  29.  
  30. # обучите StandartScaler на обучающей выборке
  31. scaler = StandardScaler()
  32. scaler.fit(X_train)
  33.  
  34. # Преобразуйте обучающий и валидационные наборы данных
  35. X_train_st = scaler.transform(X_train)
  36. X_test_st = scaler.transform(X_test)
  37.  
  38. # зададим алгоритм для нашей модели
  39. model = LogisticRegression(solver='liblinear', random_state=0)
  40.  
  41. # обучим модель
  42. model.fit(X_train_st, y_train)
  43.  
  44. # воспользуемся уже обученной моделью, чтобы сделать прогнозы
  45. predictions = model.predict(X_test_st)
  46. probabilities = model.predict_proba(X_test_st)[:, 1]
  47.  
  48. # выведем все изученные метрики
  49. print('Метрики для логистической регрессии')
  50. print('Accuracy: {:.2f}'.format(accuracy_score(y_test, predictions)))
  51. print('Precision: {:.2f}'.format(precision_score(y_test, predictions)))
  52. print('Recall: {:.2f}'.format(recall_score(y_test, predictions)))
  53. print('F1: {:.2f}'.format(f1_score(y_test, predictions)))
  54. print('ROC_AUC: {:.2f}\n'.format(roc_auc_score(y_test, probabilities)))
  55.  
  56. # зададим алгоритм для новой модели на основе алгоритма решающего дерева
  57. tree_model = DecisionTreeClassifier(random_state=0)
  58.  
  59. # обучите модель
  60. tree_model.fit(X_train_st, y_train)
  61.  
  62. # воспользуемся уже обученной моделью, чтобы сделать прогнозы
  63. tree_predictions = tree_model.predict(X_train_st)
  64. tree_probabilities =  tree_model.predict_proba(X_test_st)[:, 1]
  65.  
  66. # выведем все изученные метрики
  67. print('Метрики для дерева принятия решения')
  68. print('Accuracy: {:.2f}'.format(accuracy_score(y_test, tree_predictions)))
  69. print('Precision: {:.2f}'.format(precision_score(y_test, tree_predictions)))
  70. print('Recall: {:.2f}'.format(recall_score(y_test, tree_predictions)))
  71. print('F1: {:.2f}'.format(f1_score(y_test, tree_predictions)))
  72. print('ROC_AUC: {:.2f}'.format(roc_auc_score(y_test, tree_probabilities)))
Add Comment
Please, Sign In to add comment