Supervised Learning
06 / 29
Logistic Regression — Interview Questions
A curated bank of conceptual, mathematical, and case-study interview questions on Logistic Regression.
How to use this page
Each question is tagged Easy / Medium / Hard. Try to answer before expanding the accordion. Questions are grouped by theme — Fundamentals, Regularization, Multiclass & Imbalance, and Diagnostics / Tricky cases.
1. Fundamentals & Math
2. Regularization
3. Multiclass & Imbalanced Data
4. Diagnostics & Tricky Questions
Quick-fire one-liners
- Output range? (0, 1), via sigmoid.
- Loss? Binary cross-entropy (log-loss) — convex.
- Decision boundary? Linear hyperplane wᵀx + b = 0.
- Coefficient interpretation? e^wⱼ = odds multiplier per unit increase in xⱼ.
- Multiclass? Softmax (multinomial) or One-vs-Rest.
- Imbalance fix? class_weight="balanced", threshold tuning, PR-AUC.
- Sklearn regularization knob? C = 1/λ — small C = strong reg.
# Quick sklearn cheat-sheet for interviews
from sklearn.linear_model import LogisticRegression, LogisticRegressionCV
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline
from sklearn.metrics import roc_auc_score, average_precision_score, brier_score_loss
from sklearn.calibration import CalibratedClassifierCV
# Standard binary classifier — always scale first when regularizing
clf = make_pipeline(
StandardScaler(),
LogisticRegression(penalty="l2", C=1.0, solver="lbfgs", max_iter=1000)
).fit(X_train, y_train)
# Multinomial (softmax) for multiclass
multi = LogisticRegression(multi_class="multinomial", solver="lbfgs", C=1.0)
# L1 for feature selection
sparse = LogisticRegression(penalty="l1", C=0.5, solver="saga")
# Handle imbalance
imb = LogisticRegression(class_weight="balanced", C=1.0)
# CV-tuned C
cv = LogisticRegressionCV(Cs=10, cv=5, scoring="roc_auc").fit(X, y)
# Calibration check
cal = CalibratedClassifierCV(clf, method="isotonic", cv=5).fit(X, y)
# Metrics for imbalanced data
proba = clf.predict_proba(X_test)[:, 1]
print("ROC-AUC:", roc_auc_score(y_test, proba))
print("PR-AUC :", average_precision_score(y_test, proba))
print("Brier :", brier_score_loss(y_test, proba))