Beispiele [Hinweise für maschinelles Lernen] aufgetragen ROC-Kurve des Python

Beispiele für die ROC-Kurve gezogen Python

ROC steht für "receiver operating characteristic" (Receiver Operating Characteristic) -Kurve.

Probe Vorhersageergebnis des Lernenden nach zu sortieren, die in dieser Reihenfolge nacheinander als positive Probe Beispiel Prädiktion alle zwei signifikante Mengenwert (TPR, FPR) berechnet wird, die jeweils die einen Quer Ordinate aufgetragen ist . Die PR-Kurve mit Präzision, Recall-Rate von vertikalen, horizontalen unterschiedlich, wobei die Längsachse der ROC-Kurve sind "true Beispiel Raten" (True Positive Rate, TTR), die horizontale Achse ist das "falsch-positive Rate Beispiel" (False Positive Rate, FPR).

Wie gezeigt:

Fig gemacht werden, die folgende Python:

# -*- coding: utf-8 -*-
"""
Created on Tue Mar 24 19:04:21 2020

@author: Bean029
"""

import numpy as np
import matplotlib.pyplot as plt
from itertools import cycle

from sklearn import svm, datasets
from sklearn.metrics import roc_curve, auc
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import label_binarize
from sklearn.multiclass import OneVsRestClassifier
from scipy import interp
from sklearn.metrics import roc_auc_score

# Import some data to play with
iris = datasets.load_iris()
X = iris.data
y = iris.target

# Binarize the output
y = label_binarize(y, classes=[0, 1, 2])
n_classes = y.shape[1]

# Add noisy features to make the problem harder
random_state = np.random.RandomState(0)
n_samples, n_features = X.shape
X = np.c_[X, random_state.randn(n_samples, 200 * n_features)]

# shuffle and split training and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.5,
                                                    random_state=0)

# Learn to predict each class against the other
classifier = OneVsRestClassifier(svm.SVC(kernel='linear', probability=True,
                                 random_state=random_state))
y_score = classifier.fit(X_train, y_train).decision_function(X_test)

# Compute ROC curve and ROC area for each class
fpr = dict()
tpr = dict()
roc_auc = dict()
for i in range(n_classes):
    fpr[i], tpr[i], _ = roc_curve(y_test[:, i], y_score[:, i])
    roc_auc[i] = auc(fpr[i], tpr[i])

# Compute micro-average ROC curve and ROC area
fpr["micro"], tpr["micro"], _ = roc_curve(y_test.ravel(), y_score.ravel())
roc_auc["micro"] = auc(fpr["micro"], tpr["micro"])

plt.figure()
lw = 2
plt.plot(fpr[2], tpr[2], color='darkorange',
         lw=lw, label='ROC curve (area = %0.2f)' % roc_auc[2])
plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver operating characteristic example')
plt.legend(loc="lower right")
plt.show()

ROC-Kurve trade-off-Kurve und PR

ROC-Kurve ist relativ stabil viel, sowohl in dem positiven und die negativen Probe ausreichend, ausreichend reflektiertes Urteil ROC-Kurvenmodell. Daher ist für das gleiche Modell, PRC und ROC-Kurve kann einige Probleme erklären, aber beide haben eine gewisse Bedeutung, wenn man die Wirkung der Modelle überprüfen möchten, können Sie die beiden Kurven stellen umfassende Bewertung gezogen werden. Bei überwachten binären Klassifikationsproblem, in positiven und negativen Proben genug sind, können direkt ROC-Kurve verwendet werden, AUC, KS Bewertungsmodell Wirkung. In dem Schwellenwertbestimmungsverfahren kann die Klassifikationsleistung entsprechend dem Modell Precision, Recall oder F1 bewertet werden. Für Multi-Klassifikationsproblem, können wir die Präzision, Recall und F1 für jede Kategorie, als ein Modell des umfassenden Bewertungsindex berechnet werden.

Die Fläche unter der ROC-Kurve, zwischen 0,1 und 1, da die Qualität Bewertungswert intuitiv Klassifikator wird, desto besser ist der Wert.

ROC-Kurve ist charakteristisch für die wahre positive Rate falsch-positiven Rate Y-Achse und X-Achse.

Dies bedeutet, dass die linke obere Ecke des Diagramms „ideale“ Punkt ist, - die falsch-positive Rate von 0, 1 wahre positive Rate. Das ist nicht sehr realistisch, aber es bedeutet, eine größere Fläche unter der Kurve (AUC) in der Regel besser ist.

„Steilheit“ ROC-Kurve ist auch wichtig, weil die wahre positive Rate zu maximieren, während die falsch-positive Rate wünschenswert ist, minimiert wird.

ROC-Kurve verwendet typischerweise die binäre Klassifizierung der Ausgabe des Klassifizierers zu studieren. Zu verlängern und ROC ROC-Kurve Bereich zur Multi-Label-Klassifizierung ist es notwendig, die Ausgabe binarisiert. Jedes Etikett kann eine ROC-Kurve zeichnen, sondern kann durch jedes Element der Matrix eine binäre Prädiktion (Mittelwert mikroskopisch) sein wird als die Etikett-Anzeige ROC-Kurve aufgetragen.

 

Veröffentlicht 619 Originalarbeiten · erntete Lob 185 · Ansichten 660 000 +

Ich denke du magst

Origin blog.csdn.net/seagal890/article/details/105081188
Empfohlen
Rangfolge