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/preprocessWhat 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!");65Console Output
$ npx tsx 09-ridge-lasso/index.ts
Console output comparing R² and MSE across Linear, Ridge, and Lasso regression with varying alpha values