Logistisk regression och ROC-kurvan

Övervakad inlärning med scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Logistisk regression för binär klassificering

  • Logistisk regression används för klassificeringsproblem

  • Logistisk regression ger sannolikheter som utdata

  • Om sannolikheten, $ \ p>0.5$:

    • Data märks 1
  • Om sannolikheten, $ \ p<0.5$:

    • Data märks 0
Övervakad inlärning med scikit-learn

Linjär beslutsgräns

spridningsdiagram över feature1 vs feature 2, med en rät beslutsgräns för att förutsäga churn

Övervakad inlärning med scikit-learn

Logistisk regression i scikit-learn

from sklearn.linear_model import LogisticRegression

logreg = LogisticRegression()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
logreg.fit(X_train, y_train)
y_pred = logreg.predict(X_test)
Övervakad inlärning med scikit-learn

Förutsäga sannolikheter

y_pred_probs = logreg.predict_proba(X_test)[:, 1]

print(y_pred_probs[0])
[0.08961376]
Övervakad inlärning med scikit-learn

Sannolikhetströsklar

  • Logistisk regressions standardtröskel = 0,5

  • Inte unikt för logistisk regression

    • KNN-klassificerare har också trösklar
  • Vad händer om vi varierar tröskeln?

Övervakad inlärning med scikit-learn

ROC-kurvan

andel sanna positiva vs andel falska positiva med en prickad linje från nedre vänster till övre höger

Övervakad inlärning med scikit-learn

ROC-kurvan

tröskel noll markerad i övre högra hörnet

Övervakad inlärning med scikit-learn

ROC-kurvan

tröskel 1 markerad i nedre vänstra hörnet

Övervakad inlärning med scikit-learn

ROC-kurvan

båda trösklarna markerade

Övervakad inlärning med scikit-learn

ROC-kurvan

punkter som kurvar uppåt och åt höger ovanför den prickade linjen, representerande olika trösklar

Övervakad inlärning med scikit-learn

ROC-kurvan

linje som kurvar uppåt och åt höger ovanför den prickade linjen, representerande olika trösklar

Övervakad inlärning med scikit-learn

Plotta ROC-kurvan

from sklearn.metrics import roc_curve

fpr, tpr, thresholds = roc_curve(y_test, y_pred_probs)
plt.plot([0, 1], [0, 1], 'k--') plt.plot(fpr, tpr) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.title('Logistic Regression ROC Curve') plt.show()
Övervakad inlärning med scikit-learn

Plotta ROC-kurvan

roc-kurva för churn-datamängden, med en linje som rör sig uppåt och åt höger från nedre vänster

Övervakad inlärning med scikit-learn

ROC AUC

roc-kurva för churn-datamängden, med en linje som rör sig uppåt och åt höger från nedre vänster, med p=0.67 annoterat

Övervakad inlärning med scikit-learn

ROC AUC i scikit-learn

from sklearn.metrics import roc_auc_score

print(roc_auc_score(y_test, y_pred_probs))
0.6700964152663693
Övervakad inlärning med scikit-learn

Nu kör vi en övning!

Övervakad inlärning med scikit-learn

Preparing Video For Download...