Hoe u een precisie-herroepcurve in python maakt
Bij het gebruik van classificatiemodellen in machine learning zijn precisie en herinnering twee maatstaven die we vaak gebruiken om de modelkwaliteit te evalueren.
Nauwkeurigheid : corrigeer positieve voorspellingen ten opzichte van het totale aantal positieve voorspellingen.
Dit wordt als volgt berekend:
- Nauwkeurigheid = echte positieven / (echte positieven + valse positieven)
Herinnering : positieve voorspellingen corrigeren ten opzichte van het totale aantal werkelijke positieve resultaten
Dit wordt als volgt berekend:
- Herinnering = Echte positieven / (Echte positieven + Valse negatieven)
Om de precisie en herinnering van een bepaald model te visualiseren, kunnen we een precisie-herinneringscurve maken. Deze curve toont de afweging tussen precisie en herinnering voor verschillende drempels.
In het volgende stapsgewijze voorbeeld ziet u hoe u een nauwkeurige terugroepcurve maakt voor een logistisch regressiemodel in Python.
Stap 1: Pakketten importeren
Eerst zullen we de benodigde pakketten importeren:
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
Stap 2: Pas het logistische regressiemodel aan
Vervolgens zullen we een dataset creëren en er een logistisch regressiemodel aan koppelen:
#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 ]
Stap 3: Creëer de precisie-herinneringscurve
Vervolgens berekenen we de precisie en het terugroepen van het model en creëren we een precisie-terugroepcurve:
#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 ()
De x-as toont de herinnering en de y-as toont de precisie voor verschillende drempels.
Merk op dat naarmate de herinnering toeneemt, de precisie afneemt.
Dit vertegenwoordigt het compromis tussen de twee statistieken. Om de herinnering aan ons model te vergroten, moet de precisie afnemen en omgekeerd.
Aanvullende bronnen
Hoe logistieke regressie uit te voeren in Python
Hoe je een verwarringsmatrix creëert in Python
Een ROC-curve interpreteren (met voorbeelden)