Построение кривой ROC для различных пороговых значений PythonPython

Программы на Python
Ответить
Гость
 Построение кривой ROC для различных пороговых значений Python

Сообщение Гость »


Я использую MLP для классификации аудио. Следующий код используется для построения кривой ROC и получения оптимальных пороговых значений:

# Вычислить кривую ROC и площадь ROC для каждого класса фпр = дикт() тпр = дикт() roc_auc = dict() оптимальный_idx = dict() оптимальный_порог = dict() для меня в диапазоне (num_labels): fpr, tpr, thres = roc_curve(Y_test[:, i], Y_pred[:, i]) roc_auc = auc(fpr, tpr) # печать(тройки) оптимальный_idx = np.argmax(tpr - fpr) оптимальный_threshold = thres[optimal_idx] print(f'Пороговое значение для класса {i}:',Optimal_threshold[i]) # Вычисление микросредней кривой ROC и площади ROC fpr["микро"], tpr["микро"], thres = roc_curve(Y_test.ravel(), Y_pred.ravel()) roc_auc["микро"] = auc(fpr["микро"], tpr["микро"]) # Вычислить макросреднюю кривую ROC и область ROC # Сначала агрегируем все ложноположительные показатели all_fpr = np.unique(np.concatenate([fpr[i] для i в диапазоне(num_labels)])) # Затем интерполируем все кривые ROC в этих точках mean_tpr = np.zeros_like(all_fpr) для меня в диапазоне (num_labels): mean_tpr += np.interp(all_fpr, fpr[i], tpr[i]) # Наконец усредним значение и вычислим AUC среднее_tpr /= число_меток fpr["макрос"] = all_fpr tpr["макро"] = среднее_tpr roc_auc["макро"] = auc(fpr["макро"], tpr["макро"]) # Постройте все кривые ROC лв=2 plt.figure() plt.plot( fpr["микро"], тпр["микро"], label="микросредняя кривая ROC (площадь = {0:0.2f})".format(roc_auc["micro"]), цвет="темно-розовый", стиль линии=":", ширина линии = 4,) plt.plot( fpr["макрос"], тпр["макрос"], label="Макросредняя кривая ROC (площадь = {0:0.2f})".format(roc_auc["macro"]), цвет = «темно-синий», стиль линии=":", ширина линии = 4,) # из цикла импорта itertools цвета = цикл(["аква", "темно-оранжевый", "васильковый"]) для меня цвет в zip(диапазон(num_labels), цвета): plt.plot( фпр[я], тпр[я], цвет = цвет, лв = лв, label="Кривая ROC класса {0} (площадь = {1:0.2f})".format(i, roc_auc[i]), ) plt.plot([0, 1], [0, 1], "k--", lw=lw) plt.xlim([0.0, 1.0]) plt.ylim([0.0, 1.05]) plt.xlabel("Доля ложноположительных результатов") plt.ylabel("Истинно положительный коэффициент") plt.title("ROC для MLP") plt.legend(loc="нижний правый") plt.show() Он работает нормально и предоставляет мне оптимальные пороговые значения для всех классов в моем наборе данных, но я не могу построить график ROC для диапазона пороговых значений, определенных пользователем. Существует ли пакет или способ построить график ROC для разных наборов пороговых значений?
Ответить

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

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

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

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

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