Example 09
intermediate
09
Datasets
ML
Metrics
Preprocessing

Ridge & Lasso Regression

Compare L1 (Lasso) and L2 (Ridge) regularization techniques. Learn when to use each regularization method. This example uses deepbox/datasets, deepbox/ml, deepbox/metrics, deepbox/preprocess and focuses on loadDiabetes; LinearRegression, Ridge, Lasso; r2Score, mse; trainTestSplit, StandardScaler.

Deepbox Modules Used

deepbox/datasetsdeepbox/mldeepbox/metricsdeepbox/preprocess

What You Will Learn

  • Use deepbox/datasets for loadDiabetes.
  • Use deepbox/ml for LinearRegression, Ridge, Lasso.
  • Use deepbox/metrics for r2Score, mse.
  • Use deepbox/preprocess for trainTestSplit, StandardScaler.
  • Compare L1 (Lasso) and L2 (Ridge) regularization techniques. Learn when to use each regularization method.

Source Files

index.ts
1/**2 * Example 09: Ridge & Lasso Regression3 *4 * Compare L1 (Lasso) and L2 (Ridge) regularization techniques.5 * Learn when to use each regularization method.6 */78import { loadDiabetes } from "deepbox/datasets";9import { mse, r2Score } from "deepbox/metrics";10import { Lasso, LinearRegression, Ridge } from "deepbox/ml";11import { StandardScaler, trainTestSplit } from "deepbox/preprocess";1213console.log("=== Ridge & Lasso Regression ===\n");1415// Load diabetes dataset for regression16const diabetes = loadDiabetes();17console.log(`Dataset: ${diabetes.data.shape[0]} samples, ${diabetes.data.shape[1]} features\n`);1819// Split data into training and testing sets20const [X_train, X_test, y_train, y_test] = trainTestSplit(diabetes.data, diabetes.target, {21  testSize: 0.2,22  randomState: 42,23});2425// Scale features26const scaler = new StandardScaler();27scaler.fit(X_train);28const X_train_scaled = scaler.transform(X_train);29const X_test_scaled = scaler.transform(X_test);3031console.log("Training models...\n");3233// Train different models34const models = [35  { name: "Linear Regression", model: new LinearRegression() },36  { name: "Ridge (α=0.1)", model: new Ridge({ alpha: 0.1 }) },37  // Ridge adds penalty proportional to square of coefficients38  { name: "Ridge (α=1.0)", model: new Ridge({ alpha: 1.0 }) },39  { name: "Ridge (α=10.0)", model: new Ridge({ alpha: 10.0 }) },40  { name: "Lasso (α=0.1)", model: new Lasso({ alpha: 0.1 }) },41  // Lasso adds penalty proportional to absolute value of coefficients42  { name: "Lasso (α=1.0)", model: new Lasso({ alpha: 1.0 }) },43];4445// Compare the two models46console.log("\nComparison:");47console.log("-".repeat(50));4849for (const { name, model } of models) {50  model.fit(X_train_scaled, y_train);51  const y_pred = model.predict(X_test_scaled);5253  const r2 = r2Score(y_test, y_pred);54  const mseValue = mse(y_test, y_pred);5556  console.log(`${name.padEnd(25)} R²: ${r2.toFixed(4)}  MSE: ${mseValue.toFixed(2)}`);57}5859// Explain when to use each method60console.log("\nKey Differences:");61console.log("• Ridge regression shrinks coefficients smoothly");62console.log("• Lasso can zero out coefficients (feature selection)");6364console.log("\n✓ Regularized regression complete!");65

Console Output

$ npx tsx 09-ridge-lasso/index.ts
Console output comparing R² and MSE across Linear, Ridge, and Lasso regression with varying alpha values