Як створити криву точного відкликання в python
Використовуючи моделі класифікації в машинному навчанні, ми часто використовуємо два показники для оцінки якості моделі: точність і запам’ятовування.
Точність : правильні позитивні прогнози відносно загальної кількості позитивних прогнозів.
Це розраховується таким чином:
- Точність = Справжні позитивні результати / (Справжні позитивні + Хибні позитивні результати)
Нагадування : виправлення позитивних прогнозів проти загальних фактичних позитивних результатів
Це розраховується таким чином:
- Нагадування = Справжні позитивні результати / (Справжні позитивні + Хибні негативні)
Щоб візуалізувати точність і запам’ятовування певної моделі, ми можемо створити криву точності-запам’ятовування . Ця крива показує компроміс між точністю та запам’ятовуванням для різних порогів.
У наступному покроковому прикладі показано, як створити точну криву відкликання для моделі логістичної регресії в Python.
Крок 1. Імпортуйте пакети
Спочатку ми імпортуємо необхідні пакети:
from sklearn import datasets from sklearn. model_selection import train_test_split from sklearn. linear_model import LogisticRegression from sklearn. metrics import precision_recall_curve import matplotlib. pyplot as plt
Крок 2. Підберіть модель логістичної регресії
Далі ми створимо набір даних і підберемо до нього модель логістичної регресії:
#create dataset with 5 predictor variables
X, y = datasets. make_classification (n_samples= 1000 ,
n_features= 4 ,
n_informative= 3 ,
n_redundant= 1 ,
random_state= 0 )
#split dataset into training and testing set
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size= .3 , random_state= 0 )
#fit logistic regression model to dataset
classifier = LogisticRegression()
classify. fit (X_train, y_train)
#use logistic regression model to make predictions
y_score = classify. predict_proba (X_test)[:, 1 ]
Крок 3: Створіть криву точності запам’ятовування
Далі ми розрахуємо точність і відкликання моделі та створимо криву точності до відкликання:
#calculate precision and recall
precision, recall, thresholds = precision_recall_curve(y_test, y_score)
#create precision recall curve
fig, ax = plt. subplots ()
ax. plot (recall, precision, color=' purple ')
#add axis labels to plot
ax. set_title (' Precision-Recall Curve ')
ax. set_ylabel (' Precision ')
ax. set_xlabel (' Recall ')
#displayplot
plt. show ()
Вісь X показує запам’ятовування, а вісь Y – точність для різних порогів.
Зауважте, що зі збільшенням пам’яті точність зменшується.
Це являє собою компроміс між двома показниками. Щоб збільшити запам’ятовування нашої моделі, точність повинна зменшитися, і навпаки.
Додаткові ресурси
Як виконати логістичну регресію в Python
Як створити матрицю плутанини в Python
Як інтерпретувати криву ROC (з прикладами)