Как создать прецизионную кривую отзыва в 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 (с примерами)