ML Algorithms
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))