При использовании моделей классификации в машинном обучении мы часто используем две метрики для оценки качества модели: точность и полнота.
Precision : Правильные положительные прогнозы относительно общего количества положительных прогнозов.
Это рассчитывается как:
- Точность = истинные положительные результаты / (истинные положительные результаты + ложные положительные результаты)
Вспомнить : исправить положительные прогнозы по отношению к общему количеству фактических положительных результатов.
Это рассчитывается как:
- Отзыв = истинные положительные результаты / (истинные положительные результаты + ложноотрицательные результаты)
Чтобы визуализировать точность и полноту для определенной модели, мы можем создать кривую точность-полнота.Эта кривая показывает компромисс между точностью и полнотой для различных пороговых значений.

В следующем пошаговом примере показано, как создать кривую точного полноты для модели логистической регрессии в 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()
classifier. fit (X_train, y_train)
#use logistic regression model to make predictions
y_score = classifier. predict_proba (X_test)[:, 1 ]
Шаг 3: Создайте кривую Precision-Recall
Далее мы рассчитаем точность и полноту модели и создадим кривую точность-отзыв:
#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')
#display plot
plt.show()

По оси X показан отзыв, а по оси Y — точность для различных пороговых значений.
Обратите внимание, что по мере увеличения полноты точность снижается.
Это представляет собой компромисс между двумя показателями. Чтобы увеличить полноту нашей модели, точность должна уменьшиться, и наоборот.
Дополнительные ресурсы
Как выполнить логистическую регрессию в Python
Как создать матрицу путаницы в Python
Как интерпретировать кривую ROC (с примерами)