Как создать прецизионную кривую отзыва в python


При использовании моделей классификации в машинном обучении для оценки качества модели мы часто используем два показателя: точность и полноту.

Точность : правильные положительные прогнозы относительно общего количества положительных прогнозов.

Это рассчитывается следующим образом:

  • Точность = Истинные положительные результаты / (Истинные положительные результаты + Ложные положительные результаты)

Напоминание : корректировка положительных прогнозов по сравнению с общим фактическим положительным результатом.

Это рассчитывается следующим образом:

  • Напоминание = Истинные положительные результаты / (Истинные положительные результаты + Ложноотрицательные результаты)

Чтобы визуализировать точность и отзыв определенной модели, мы можем создать кривую точности отзыва . Эта кривая показывает компромисс между точностью и полнотой для разных порогов.

Кривая точного отзыва в 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 () 

Кривая точного отзыва в Python

Ось X показывает отзыв, а ось Y показывает точность для разных порогов.

Обратите внимание, что по мере увеличения полноты точность снижается.

Это представляет собой компромисс между двумя показателями. Чтобы повысить запоминаемость нашей модели, точность должна уменьшиться, и наоборот.

Дополнительные ресурсы

Как выполнить логистическую регрессию в Python
Как создать матрицу путаницы в Python
Как интерпретировать кривую ROC (с примерами)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *