Почему значения чувствительности (отзыва) различаются между классификацией_report и Precision_recall_fscore_support в циPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему значения чувствительности (отзыва) различаются между классификацией_report и Precision_recall_fscore_support в ци

Сообщение Anonymous »

Я работаю с синтетическим набором данных, созданным с помощью make_classification из sklearn.datasets и состоящим из 5 классов. Я обучил RandomForestClassifier на этих данных и оцениваю его производительность двумя разными методами. Однако я наблюдаю различия в значениях чувствительности (отзыва) между этими двумя методами.
Вот код, который я использую:

Код: Выделить всё

from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report, precision_recall_fscore_support
import numpy as np
import pandas as pd

# Generate a synthetic dataset with 5 classes
X, y = make_classification(n_samples=1000, n_classes=5, n_informative=10, n_clusters_per_class=1, random_state=42)

# Split into train and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Train a classifier
clf = RandomForestClassifier(random_state=42)
clf.fit(X_train, y_train)

# Predict on the test set
y_pred = clf.predict(X_test)

# Method 1: classification_report
print("Classification Report")
print(classification_report(y_test, y_pred))

# Method 2: Loop with precision_recall_fscore_support
res = []

for l in range(5):
prec, recall, _, _ = precision_recall_fscore_support(np.array(y_test) == l,
np.array(y_pred) == l,
pos_label=True, average=None)
res.append([l, recall[0], recall[1]])

df = pd.DataFrame(res, columns=['class', 'sensitivity', 'specificity'])
print("\nSensitivity and Specificity")
print(df)
Выходы:

Код: Выделить всё

Classification Report
precision    recall  f1-score   support

0       0.76      0.71      0.74        35
1       0.72      0.93      0.81        30
2       0.72      0.81      0.76        32
3       0.85      0.86      0.86        59
4       0.88      0.64      0.74        44

accuracy                           0.79       200
macro avg       0.78      0.79      0.78       200
weighted avg       0.80      0.79      0.79       200

Sensitivity and Specificity
class  sensitivity  specificity
0      0     0.951515     0.714286
1      1     0.935294     0.933333
2      2     0.940476     0.812500
3      3     0.936170     0.864407
4      4     0.974359     0.636364
Вопрос:
Почему значения чувствительности (отзыва) различаются между классификационным_отчетом и циклом с использованием Precision_recall_fscore_support? В частности, почему существует несоответствие между значениями отзыва, сообщаемыми классификационным_отчетом, и значениями чувствительности, рассчитанными в методе цикла? Если возможно, можете ли вы показать это на простом примере (решается вручную)
Что вы пробовали и чего ожидали?
Я использовал два метода для оценки производительности моего RandomForestClassifier. Сначала я использовал классификацию_report, чтобы получить точность, полноту и оценку F1 для каждого класса. Затем я рассчитал чувствительность и специфичность для каждого класса, используя цикл с точностью_recall_fscore_support.
Я ожидал, что значения чувствительности, рассчитанные в методе цикла, будут соответствовать значениям отзыва из классификационного_отчета< /code>, поскольку в задачах классификации чувствительность и отзыв часто считаются синонимами. Однако я заметил расхождения между двумя наборами значений.
Что на самом деле получилось?
Значения отзыва из классификационного_отчета различаются. из значений чувствительности, рассчитанных петлевым методом. Классификация_отчет предоставляет значения отзыва для каждого класса в многоклассовом контексте, а метод цикла рассматривает каждый класс как задачу двоичной классификации, что приводит к различным значениям чувствительности и специфичности.

Подробнее здесь: https://stackoverflow.com/questions/786 ... report-and
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Crystal Report – как округлить десятичную дробь в Crystal Report?
    Anonymous » » в форуме C#
    0 Ответы
    53 Просмотры
    Последнее сообщение Anonymous
  • Как получить /Allure-Result (не Allure-Report) папка из Junt Report xml
    Anonymous » » в форуме JAVA
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Почему gcc сравнивает, казалось бы, равные значения с плавающей запятой как разные с «-fexcess-precision=standard»?
    Anonymous » » в форуме C++
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Почему gcc сравнивает, казалось бы, равные значения с плавающей запятой как разные с «-fexcess-precision=standard»?
    Anonymous » » в форуме C++
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Борьба с классификацией монет с помощью TensorFlow
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»