Basic Binary Classification with LogisticNet

This notebook demonstrates the basic usage of LogisticNet for binary classification, including fitting the model, making predictions, and evaluating accuracy.

Setup

We use a synthetic dataset from sklearn.datasets.make_classification for reproducibility.

[1]:
import numpy as np
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from glmpynet import LogisticRegression

# Generate synthetic dataset
X, y = make_classification(n_samples=200, n_features=20, n_classes=2, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Instantiate and fit LogisticNet
model = LogisticRegression()
model.fit(X_train, y_train)

# Predict and evaluate
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy:.2f}")

# Predict probabilities
y_proba = model.predict_proba(X_test)
print(f"Sample probabilities:\n{y_proba[:5]}")
Accuracy: 0.88
Sample probabilities:
[[0.94532103 0.05467897]
 [0.98537361 0.01462639]
 [0.9899398  0.0100602 ]
 [0.00795596 0.99204404]
 [0.0825289  0.9174711 ]]

Explanation

  • LogisticRegression() is instantiated with default parameters (C=1.0, penalty='l2').

  • The model is trained on a synthetic dataset with 200 samples and 20 features.

  • Predictions and probabilities are computed, with accuracy typically around 0.85-0.95 for this dataset.

  • When transitioning to glmnet, expect similar accuracy but potential differences in probabilities due to elastic-net regularization.