### Setup Example Dataset Source: https://github.com/koaning/scikit-lego/blob/main/docs/user-guide/cross-validation.md This snippet sets up an example dataset for cross-validation demonstrations. It's a prerequisite for subsequent examples. ```python from sklearn.datasets import make_blobs X, y = make_blobs(n_samples=1000, centers=5, random_state=42) ``` -------------------------------- ### Setup for Time Series Cross-Validation Examples Source: https://github.com/koaning/scikit-lego/blob/main/docs/user-guide/cross-validation.md Sets up random data and a plotting function for demonstrating TimeGapSplit examples. This is a prerequisite for the subsequent examples. ```python import pandas as pd import numpy as np from sklearn.model_selection import TimeSeriesSplit from sklearn.base import BaseEstimator, RegressorMixin class MockTimeSeriesSplit(BaseEstimator, RegressorMixin): def __init__(self, n_splits=5, *, max_train_size=None, test_size=None, gap=0): self.n_splits = n_splits self.max_train_size = max_train_size self.test_size = test_size self.gap = gap def split(self, X, y=None, groups=None): X = np.asarray(X) n_samples = X.shape[0] if n_samples < 2: yield [], [] return indices = np.arange(n_samples) for i in range(self.n_splits + 1): split_point = n_samples * i // (self.n_splits + 1) train_end = split_point - self.gap test_start = split_point if train_end < 0 or test_start >= n_samples: continue train_indices = indices[:train_end] test_indices = indices[test_start:] if self.max_train_size is not None: train_indices = train_indices[-self.max_train_size:] if self.test_size is not None: test_indices = test_indices[:self.test_size] if len(train_indices) > 0 and len(test_indices) > 0: yield train_indices, test_indices def predict(self, X, y=None): # Mock predict method return np.zeros(len(X)) def plot_split(splitter, X, y=None, title=""): import matplotlib.pyplot as plt fig, ax = plt.subplots(figsize=(10, 5)) ax.plot(X, y) for i, (train_index, test_index) in enumerate(splitter.split(X, y)): ax.scatter(X[train_index], y[train_index], marker="o", label=f"Train Fold {i}") ax.scatter(X[test_index], y[test_index], marker="x", label=f"Test Fold {i}") ax.set_title(title) ax.legend() plt.show() # Generate random data np.random.seed(42) dates = pd.date_range(start="2020-01-01", periods=100, freq="D") data = np.random.randn(100).cumsum() + 50 X = pd.DataFrame({"date": dates, "value": data}) X = X.set_index("date") y = X["value"] ``` -------------------------------- ### Install scikit-lego from a local clone Source: https://github.com/koaning/scikit-lego/blob/main/docs/installation.md Clone the repository locally and install scikit-lego using pip. ```bash git clone https://github.com/koaning/scikit-lego.git cd scikit-lego python -m pip install . ``` -------------------------------- ### Install scikit-lego Source: https://github.com/koaning/scikit-lego/blob/main/docs/index.md Install the package using pip. For more options, refer to the installation section. ```bash pip install scikit-lego ``` -------------------------------- ### Install Documentation Dependencies Source: https://github.com/koaning/scikit-lego/blob/main/docs/contribution.md Install the necessary Python packages for rendering the documentation locally. This command should be run from the root of the project. ```bash python -m pip install -e ."[docs]" ``` -------------------------------- ### Install scikit-lego from source using git Source: https://github.com/koaning/scikit-lego/blob/main/docs/installation.md Install scikit-lego directly from its GitHub repository using pip. ```bash python -m pip install git+https://github.com/koaning/scikit-lego.git ``` -------------------------------- ### Setup Data and Functionalities for Outlier Detection Source: https://github.com/koaning/scikit-lego/blob/main/docs/user-guide/outliers.md Imports necessary libraries and defines helper functions for plotting and data generation used in outlier detection examples. ```python import matplotlib.pyplot as plt import numpy as np from sklearn.decomposition import PCA from sklearn.mixture import GaussianMixture from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.neighbors import LocalOutlierFactor from sklearn.cluster import KMeans from sklearn.ensemble import IsolationForest from sklearn.svm import OneClassSVM from sklearn.datasets import make_blobs from sklearn.manifold import TSNE from sklearn.decomposition import FastICA from sklearn.random_projection import SparseRandomProjection from sklearn.discriminant_analysis import LinearDiscriminantAnalysis from sklearn.decomposition import TruncatedSVD from sklearn.decomposition import KernelPCA from sklearn.decomposition import IncrementalPCA from sklearn.decomposition import DictionaryLearning from sklearn.decomposition import NMF from sklearn.decomposition import LatentDirichletAllocation from sklearn.decomposition import FactorAnalysis from sklearn.decomposition import SparseCoder from sklearn.decomposition import MiniBatchDictionaryLearning from sklearn.decomposition import MiniBatchNMF from sklearn.decomposition import MiniBatchSparseCoder from sklearn.decomposition import SparsePCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA from sklearn.decomposition import PCA\nfrom sklearn.datasets import make_blobs def plot_outliers(model, X, y=None, title="Outlier Detection", ax=None): """Plots the outliers detected by a model.""" if ax is None: fig, ax = plt.subplots() y_pred = model.fit_predict(X) outlier_indices = np.where(y_pred == -1)[0] inlier_indices = np.where(y_pred == 1)[0] ax.scatter(X[inlier_indices, 0], X[inlier_indices, 1], color='blue', label='Inliers') ax.scatter(X[outlier_indices, 0], X[outlier_indices, 1], color='red', label='Outliers') ax.set_title(title) ax.set_xlabel("Feature 1") ax.set_ylabel("Feature 2") ax.legend() return ax def generate_data(n_samples=100, n_features=2, centers=3, cluster_std=1.0, outlier_fraction=0.1): """Generates data with outliers.""" X, _ = make_blobs(n_samples=n_samples, n_features=n_features, centers=centers, cluster_std=cluster_std, random_state=42) n_outliers = int(outlier_fraction * n_samples) outliers = np.random.uniform(low=-10, high=10, size=(n_outliers, n_features)) X = np.vstack([X, outliers]) return X ``` -------------------------------- ### Install scikit-lego with optional dependencies (local clone) Source: https://github.com/koaning/scikit-lego/blob/main/docs/installation.md Install scikit-lego with optional dependencies from a local clone using pip. ```bash git clone https://github.com/koaning/scikit-lego.git cd scikit-lego python -m pip install ".[cvxpy]" ``` ```bash python -m pip install ."[formulaic]" ``` ```bash python -m pip install ."[umap]" ``` ```bash python -m pip install ".[all]" ``` -------------------------------- ### Setup Libraries and Configuration Source: https://github.com/koaning/scikit-lego/blob/main/docs/user-guide/debug-pipeline.md Initializes necessary libraries and configuration settings for using the DebugPipeline. ```python import numpy as np from sklearn.pipeline import Pipeline from sklearn.preprocessing import StandardScaler from sklego.pipeline import DebugPipeline from sklego.common import StubTransformer # Define a simple transformer for demonstration class Adder(StubTransformer): def __init__(self, value=1): self.value = value def transform(self, X): return X + self.value def fit(self, X, y=None): return self ``` -------------------------------- ### Install scikit-lego with optional dependencies (pip) Source: https://github.com/koaning/scikit-lego/blob/main/docs/installation.md Install scikit-lego with specific optional dependencies like cvxpy, formulaic, or umap using pip. ```bash python -m pip install scikit-lego"[cvxpy]" ``` ```bash python -m pip install scikit-lego"[formulaic]" ``` ```bash python -m pip install scikit-lego"[umap]" ``` ```bash python -m pip install scikit-lego"[all]" ``` -------------------------------- ### Install scikit-lego using pip Source: https://github.com/koaning/scikit-lego/blob/main/docs/installation.md Use this command to install the latest stable version of scikit-lego via pip. ```bash python -m pip install scikit-lego ``` -------------------------------- ### Serve Documentation Locally (mkdocs) Source: https://github.com/koaning/scikit-lego/blob/main/docs/contribution.md Start a local development server to preview the documentation. This command allows for direct use of mkdocs and can accept additional parameters. ```bash mkdocs serve ``` -------------------------------- ### TimeGapSplit Summary Example Source: https://github.com/koaning/scikit-lego/blob/main/docs/user-guide/cross-validation.md Provides a summary example of TimeGapSplit, likely showcasing a combination of parameters or a final configuration. ```python from sklearn.model_selection import TimeGapSplit tss = TimeGapSplit(n_splits=5, gap=2, window="expanding", test_size=10) plot_split(tss, X, y, title="TimeGapSplit - Summary") ``` -------------------------------- ### Install scikit-lego for development Source: https://github.com/koaning/scikit-lego/blob/main/readme.md Install scikit-lego in editable mode for development. This allows you to make changes to the source code and have them reflected immediately without reinstallation. ```bash python -m pip install -e ".[dev]" python setup.py develop ``` -------------------------------- ### Usage Example: scikit-learn Pipeline with scikit-lego components Source: https://github.com/koaning/scikit-lego/blob/main/readme.md Demonstrates how to integrate scikit-lego's custom transformers and models into a scikit-learn Pipeline. This example shows combining StandardScaler, RandomAdder, and GMMClassifier. ```python # the scikit learn stuff we love from sklearn.preprocessing import StandardScaler from sklearn.pipeline import Pipeline # from scikit lego stuff we add from sklego.preprocessing import RandomAdder from sklego.mixture import GMMClassifier ... mod = Pipeline([ ("scale", StandardScaler()), ("random_noise", RandomAdder()), ("model", GMMClassifier()) ]) ... ``` -------------------------------- ### Install scikit-lego using conda Source: https://github.com/koaning/scikit-lego/blob/main/docs/installation.md Install scikit-lego from the conda-forge channel using the conda package manager. ```bash conda install -c conda-forge scikit-lego ``` -------------------------------- ### Load sample data for Pandas Pipelines Source: https://github.com/koaning/scikit-lego/blob/main/docs/user-guide/pandas-pipelines.md Load a sample dataset to be used in pandas pipeline examples. Ensure data is available before processing. ```python --8<-- "docs/_scripts/pandas-pipelines.py:data-setup" ``` -------------------------------- ### PCA Example Source: https://github.com/koaning/scikit-lego/blob/main/docs/_static/linear-models/grid.html Instantiates a PCA transformer to reduce dimensionality. ```python PCA(n_components=3) ``` ```python PCA(n_components=2) ``` -------------------------------- ### Setup for Grouped Prediction Source: https://github.com/koaning/scikit-lego/blob/main/docs/user-guide/meta-models.md Loads necessary libraries and data for demonstrating the GroupedPredictor. This includes data related to chick weights and diets, suitable for group-based modeling. ```python import pandas as pd import numpy as np from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split from sklego.meta import GroupedPredictor # Load the chicken weight dataset df = pd.read_csv("https://raw.githubusercontent.com/scikit-learn/scikit-learn/main/sklearn/datasets/data/chicken_weights.csv") df = df.set_index("Date") # Define features and target X = df[['Time', 'Chicken', 'Diet']] y = df['Weight'] # Split data into training and testing sets X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) ``` -------------------------------- ### ColumnSelector Example Source: https://github.com/koaning/scikit-lego/blob/main/docs/_static/linear-models/grid.html Instantiates a ColumnSelector to select specific columns for processing. ```python ColumnSelector(columns=[0, 1, 2, 3, 4]) ``` ```python ColumnSelector(columns=[5, 6, 7, 8, 9]) ``` -------------------------------- ### TimeGapSplit Example 3: Expanding Window Source: https://github.com/koaning/scikit-lego/blob/main/docs/user-guide/cross-validation.md Shows TimeGapSplit configured with an expanding window, similar to scikit-learn's TimeSeriesSplit. The training set grows with each fold. ```python from sklearn.model_selection import TimeGapSplit tss = TimeGapSplit(window="expanding") plot_split(tss, X, y, title="TimeGapSplit - Example 3 (window='expanding')") ``` -------------------------------- ### TimeGapSplit Example 1: Basic Usage Source: https://github.com/koaning/scikit-lego/blob/main/docs/user-guide/cross-validation.md Demonstrates the basic functionality of TimeGapSplit with default parameters. It splits the time series data into training and testing sets. ```python from sklearn.model_selection import TimeGapSplit tss = TimeGapSplit() plot_split(tss, X, y, title="TimeGapSplit - Example 1") ``` -------------------------------- ### TimeGapSplit Example 2: With Gap Source: https://github.com/koaning/scikit-lego/blob/main/docs/user-guide/cross-validation.md Illustrates TimeGapSplit with a specified gap. This ensures a separation between the end of the training set and the beginning of the test set. ```python from sklearn.model_selection import TimeGapSplit tss = TimeGapSplit(gap=5) plot_split(tss, X, y, title="TimeGapSplit - Example 2 (gap=5)") ``` -------------------------------- ### Install and Load Reticulate in R Source: https://github.com/koaning/scikit-lego/blob/main/docs/rstudio.md Install the reticulate package and load it along with tidyverse. Optionally, configure miniconda and discover Python configurations. ```r install.packages("reticulate") # optionally you can install miniconda # reticulate::install_miniconda() library(reticulate) library(tidyverse) # again optionally if you're using miniconda # use_condaenv("r-reticulate") py_discover_config() ``` -------------------------------- ### Predict Boston Housing Dataset Source: https://github.com/koaning/scikit-lego/blob/main/docs/user-guide/fairness.md This snippet demonstrates a simple pipeline for predicting the Boston housing dataset. It's a starting point before considering fairness. ```python from sklearn.datasets import fetch_openml from sklearn.linear_model import RidgeCV from sklearn.model_selection import train_test_split from sklearn.pipeline import make_pipeline X, y = fetch_openml("boston", version=1, return_X_y=True, as_frame=True) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=0) model = make_pipeline(RidgeCV()) model.fit(X_train, y_train) y_pred = model.predict(X_test) print(f"MSE: {mean_squared_error(y_test, y_pred):.2f}") ``` -------------------------------- ### GridSearchCV Estimator Example Source: https://github.com/koaning/scikit-lego/blob/main/docs/_static/linear-models/grid.html Demonstrates the structure of a GridSearchCV estimator with a complex Pipeline including FeatureUnion, ColumnSelector, PCA, and LinearRegression. This is useful for setting up hyperparameter search spaces. ```python GridSearchCV(cv=3, estimator=Pipeline(steps=[('models', FeatureUnion(transformer_list=[('path1', Pipeline(steps=[('select1', ColumnSelector(columns=[0, 1, 2, 3, 4])), ('pca', PCA(n_components=3)), ('linear', EstimatorTransformer(estimator=LinearRegression()))])), ('path2', Pipeline(steps=[('select2', ColumnSelector(columns=[5, 6, 7, 8, 9])), ('pca', PCA(n_components=2)), ('linear', EstimatorTransformer(estimator=LinearRegression()))])), ('prob_weight', ProbWeightRegression())])), ('prob_weight', ProbWeightRegression())]), param_grid={}) ``` -------------------------------- ### Common Imports for Linear Models Source: https://github.com/koaning/scikit-lego/blob/main/docs/user-guide/linear-models.md Imports commonly used across various linear model examples. Ensure these are available before running other snippets. ```python import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error from sklego.linear_model import LowessRegression, ProbWeightRegression from sklego.common import unique_rows from sklego.datasets import make_simulated_low_dimensional_data ``` -------------------------------- ### DecayEstimator Model Example Source: https://github.com/koaning/scikit-lego/blob/main/docs/user-guide/meta-models.md Illustrates the application of the DecayEstimator on time series data, comparing a standard average model with one that decays older data's importance. ```python --8<-- "docs/_scripts/meta-models.py:decay-model" ``` -------------------------------- ### LowessRegression Example Source: https://github.com/koaning/scikit-lego/blob/main/docs/user-guide/linear-models.md Demonstrates the usage of LowessRegression for interpolation tasks. This model performs many weighted linear regressions internally during prediction. ```python X, y = make_simulated_low_dimensional_data(n_samples=50, n_features=1, noise=0.1, random_state=42) # Fit LowessRegression model lowess = LowessRegression(sigma=0.1, span=0.2) lowess.fit(X, y) # Predict on new data X_pred = np.linspace(X.min(), X.max(), 100).reshape(-1, 1) y_pred = lowess.predict(X_pred) print(f"LowessRegression fitted with sigma={lowess.sigma} and span={lowess.span}") ``` -------------------------------- ### Custom Shrinkage Function Example Source: https://github.com/koaning/scikit-lego/blob/main/docs/user-guide/meta-models.md Demonstrates how to define and use a custom shrinkage function for grouped predictions. The function takes group sizes and returns normalized weights. ```python import numpy as np def exp_decay_shrinkage(group_sizes, decay=0.9): """A custom shrinkage function that creates an exponential decay which is independent of the group sizes, but depends on the decay parameter and the number of groups, and finally normalized to sum to 1. """ a = decay ** np.arange(len(group_sizes), 0, -1) return a / a.sum() exp_decay_shrinkage(group_sizes=[30, 20, 15], decay=0.9) ``` -------------------------------- ### TimeGapSplit Example 5: Limiting Splits Source: https://github.com/koaning/scikit-lego/blob/main/docs/user-guide/cross-validation.md Illustrates how to limit the number of splits generated by TimeGapSplit using the `n_splits` parameter, especially when train and validation durations might lead to many potential splits. ```python from sklearn.model_selection import TimeGapSplit tss = TimeGapSplit(n_splits=3, window="expanding", test_size=10) plot_split(tss, X, y, title="TimeGapSplit - Example 5 (n_splits=3)") ``` -------------------------------- ### Equal Opportunity Classifier Example Source: https://github.com/koaning/scikit-lego/blob/main/docs/user-guide/fairness.md Demonstrates fitting an EqualOpportunityClassifier. This classifier focuses on ensuring equal true positive rates across different groups, particularly for the positive class. It requires specifying sensitive columns and a covariance threshold. ```python from sklearn.linear_model import LogisticRegression from sklego.common import DataFrameTransformer from sklego.fairness import EqualOpportunityClassifier X, y = load_boston(return_X_y=True) # Select sensitive features and transform target idx_train = np.random.choice(X.shape[0], int(X.shape[0] * 0.8), replace=False) X_train, y_train = X[idx_train], y[idx_train] X_test, y_test = X[~idx_train], y[~idx_train] y_train_binary = (y_train > np.median(y_train)).astype(int) y_test_binary = (y_test > np.median(y_test)).astype(int) # Define sensitive features sensitive_features = ['RM', 'LSTAT'] # Create an EqualOpportunityClassifier eoc = EqualOpportunityClassifier(sensitive_cols=sensitive_features, covariance_threshold=0.01) eoc.fit(X_train, y_train_binary) print(f"Equal Opportunity Classifier Accuracy: {eoc.score(X_test, y_test_binary):.3f}") print(f"Equal Opportunity Classifier Fairness Score: {equal_opportunity_score(eoc, X_test, y_test_binary):.3f}") ``` -------------------------------- ### GridSearchCV with Pipeline and FeatureUnion Source: https://github.com/koaning/scikit-lego/blob/main/docs/_static/linear-models/grid.html Example of setting up GridSearchCV with a Pipeline that includes FeatureUnion for parallel feature processing. This is useful for exploring different combinations of feature extraction and modeling strategies. ```python GridSearchCV(cv=3, estimator=Pipeline(steps=[('models', FeatureUnion(transformer_list=[('path1', Pipeline(steps=[('select1', ColumnSelector(columns=[0, 1, 2, 3, 4])), ('pca', ``` -------------------------------- ### Render Documentation Locally Source: https://github.com/koaning/scikit-lego/blob/main/docs/README.md Run this command from the repository root to render the documentation locally. The documentation will be available at localhost:8000. ```console make docs ``` -------------------------------- ### Generate Plots from Scratch Source: https://github.com/koaning/scikit-lego/blob/main/docs/README.md Navigate to the docs directory and run this command to generate all plots. Results are saved in the docs/_static folder. ```console cd docs make generate-all ``` -------------------------------- ### GMMClassifier for Classification Source: https://github.com/koaning/scikit-lego/blob/main/docs/user-guide/mixture-methods.md Example of using GMMClassifier from sklego to perform classification tasks. Ensure necessary imports are included. ```python from sklearn.model_selection import train_test_split from sklearn.datasets import make_classification from sklego.mixture import GMMClassifier X, y = make_classification(n_samples=500, n_features=2, n_informative=2, n_redundant=0, random_state=42) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) clf = GMMClassifier(random_state=42) clf.fit(X_train, y_train) clf.score(X_test, y_test) ``` -------------------------------- ### Basic Pipeline Usage with RandomAdder Source: https://github.com/koaning/scikit-lego/blob/main/docs/index.md Demonstrates creating a scikit-learn pipeline that includes the RandomAdder transformer. This is useful for adding random noise to features within a pipeline. ```python from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression from sklearn.pipeline import Pipeline from sklego.transformers import RandomAdder X, y = ... mod = Pipeline([ ("scale", StandardScaler()), ("random_noise", RandomAdder()), ("model", LogisticRegression(solver='lbfgs')) ]) _ = mod.fit(X, y) ... ``` -------------------------------- ### Fit and Transform with Simple Pipeline Source: https://github.com/koaning/scikit-lego/blob/main/docs/user-guide/debug-pipeline.md Applies a DebugPipeline with a custom 'Adder' transformer to input data. Demonstrates the basic fit and transform operations. ```python X = np.ones((3, 5)) debug_pipe = DebugPipeline([ ('add_one', Adder(value=1)), ('add_ten', Adder(value=10)), ('add_hundred', Adder(value=100)) ]) X_transformed = debug_pipe.fit_transform(X) ``` -------------------------------- ### Load Penguins Dataset Source: https://github.com/koaning/scikit-lego/blob/main/docs/user-guide/meta-models.md Loads the penguins dataset for use in grouped transformations. This is a common starting point for demonstrating meta-model functionalities. ```python import pandas as pd penguins = pd.read_csv("https://raw.githubusercontent.com/mwaskom/seaborn-data/master/penguins.csv") ``` -------------------------------- ### Load and Prepare Dataset in R Source: https://github.com/koaning/scikit-lego/blob/main/docs/rstudio.md Load a dataset using scikit-lego's dataset loader and prepare features (X) and target (y) variables in R. This involves selecting columns, converting data types, and ensuring numeric formats. ```r df <- sklego$datasets$load_arrests(give_pandas = TRUE) X <- df %>% select(year, age, colour) X['colour'] <- as.numeric(X['colour'] == "Black") y <- as.numeric(df$checks > 1) ``` -------------------------------- ### GaussianMixtureNB model results Source: https://github.com/koaning/scikit-lego/blob/main/docs/user-guide/naive-bayes.md Demonstrates running the GaussianMixtureNB algorithm with one or two Gaussians to fit the simulated dataset. The results show how the model adapts to the data distribution. ```python from sklearn.naive_bayes import GaussianNB from sklego.naive_bayes import GaussianMixtureNB # Standard Gaussian Naive Bayes gnb = GaussianNB() gnb.fit(X, y) y_pred_gnb = gnb.predict(X) # Gaussian Mixture Naive Bayes with 1 Gaussian gmnb1 = GaussianMixtureNB(n_components=1) gmnb1.fit(X, y) y_pred_gmnb1 = gmnb1.predict(X) # Gaussian Mixture Naive Bayes with 2 Gaussians gmnb2 = GaussianMixtureNB(n_components=2) gmnb2.fit(X, y) y_pred_gmnb2 = gmnb2.predict(X) # Plotting results fig, axs = plt.subplots(1, 3, figsize=(15, 5)) axs[0].scatter(X[:, 0], X[:, 1], c=y_pred_gnb, s=50, cmap='viridis') axs[0].set_title('GaussianNB') axs[1].scatter(X[:, 0], X[:, 1], c=y_pred_gmnb1, s=50, cmap='viridis') axs[1].set_title('GaussianMixtureNB (1 component)') axs[2].scatter(X[:, 0], X[:, 1], c=y_pred_gmnb2, s=50, cmap='viridis') axs[2].set_title('GaussianMixtureNB (2 components)') plt.tight_layout() plt.show() ``` -------------------------------- ### Generate Sample Data for RBF Transformer Source: https://github.com/koaning/scikit-lego/blob/main/docs/user-guide/preprocessing.md Create a sample dataset with 'day', 'day_of_year', and 'y' columns to demonstrate the RepeatingBasisFunction transformer. ```python import pandas as pd import numpy as np df = pd.DataFrame({ 'day': np.arange(1, 366), 'day_of_year': np.tile(np.arange(1, 366), 1), 'y': np.random.randn(365) }) df['day_of_year'] = df['day_of_year'] % 365 df.loc[df['day_of_year'] == 0, 'day_of_year'] = 365 ``` -------------------------------- ### Realistic ClusterFoldValidation Example Source: https://github.com/koaning/scikit-lego/blob/main/docs/user-guide/cross-validation.md Shows a more practical application of ClusterFoldValidation within scikit-learn's cross_val_score function. This is how you would typically use it for model evaluation. ```python from sklearn.model_selection import cross_val_score from sklearn.pipeline import Pipeline from sklearn.cluster import KMeans from sklego.model_selection import ClusterFoldValidation # Given an existing pipeline and X,y dataset, you probably would do something like this: # Assuming 'pipeline', 'X', and 'y' are defined # pipeline = Pipeline([...]) # X = ... # y = ... # fold_method = ClusterFoldValidation( # KMeans(n_clusters=5, random_state=42) # ) # cross_val_score(pipeline, X, y, cv=fold_method) ``` -------------------------------- ### Simulated dataset for Naive Bayes Source: https://github.com/koaning/scikit-lego/blob/main/docs/user-guide/naive-bayes.md Imports dependencies and creates a simulated dataset for demonstrating Naive Bayes. This dataset is designed to be challenging for standard Gaussian Naive Bayes due to multi-peaked classes. ```python from sklearn.datasets import make_blobs import matplotlib.pyplot as plt X, y = make_blobs(n_samples=300, centers=2, cluster_std=[1.0, 2.5], random_state=42) plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap='viridis') plt.title('Simulated dataset') plt.xlabel('Feature 1') plt.ylabel('Feature 2') plt.show() ``` -------------------------------- ### Set Log Callback After Initialization Source: https://github.com/koaning/scikit-lego/blob/main/docs/user-guide/debug-pipeline.md Demonstrates how to set the `log_callback` function for a DebugPipeline after it has been initialized. This allows for dynamic configuration of logging. ```python X = np.ones((3, 5)) debug_pipe = DebugPipeline([ ('add_one', Adder(value=1)), ('add_ten', Adder(value=10)), ('add_hundred', Adder(value=100)) ]) # Set the log_callback after initialisation debug_pipe.set_params(log_callback='default') X_transformed = debug_pipe.fit_transform(X) ``` -------------------------------- ### MRMR MNIST Introduction Source: https://github.com/koaning/scikit-lego/blob/main/docs/user-guide/feature-selection.md Loads the MNIST dataset and prepares it for feature selection and model training. ```python X, y = fetch_openml('mnist_784', version=1, return_X_y=True, as_frame=False) # Downcast to smaller integers to save memory X = X.astype('float32') y = y.astype('int') # Select a subset of the data for faster processing X = X[:10000] y = y[:10000] # Encode the target variable le = LabelEncoder() y = le.fit_transform(y) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) ``` -------------------------------- ### Baseline Model: Linear Regression with Dummies Source: https://github.com/koaning/scikit-lego/blob/main/docs/user-guide/meta-models.md Implements a baseline model using Linear Regression with dummy variables for the 'diet' column. This serves as a comparison point for the GroupedPredictor, highlighting how dummy variables affect the intercept but not the gradient. ```python from sklearn.preprocessing import OneHotEncoder from sklearn.compose import ColumnTransformer from sklearn.pipeline import Pipeline # Define the column transformer for one-hot encoding 'Diet' preprocessor = ColumnTransformer( transformers=[ ('onehot', OneHotEncoder(handle_unknown='ignore'), ['Diet']) ], remainder='passthrough' # Keep 'Time' and 'Chicken' columns ) # Create the baseline pipeline baseline_pipeline = Pipeline(steps=[('preprocessor', preprocessor), ('regressor', LinearRegression())]) # Fit the baseline model baseline_pipeline.fit(X_train, y_train) # Predict using the baseline model y_pred_baseline = baseline_pipeline.predict(X_test) ``` -------------------------------- ### Demographic Parity Classifier Example Source: https://github.com/koaning/scikit-lego/blob/main/docs/user-guide/fairness.md Demonstrates fitting a DemographicParityClassifier. This classifier aims to ensure that the decision boundary is independent of sensitive attributes. Specify sensitive columns and the maximum allowed covariance. ```python from sklearn.linear_model import LogisticRegression from sklego.common import DataFrameTransformer from sklego.fairness import DemographicParityClassifier X, y = load_boston(return_X_y=True) # Select sensitive features and transform target idx_train = np.random.choice(X.shape[0], int(X.shape[0] * 0.8), replace=False) X_train, y_train = X[idx_train], y[idx_train] X_test, y_test = X[~idx_train], y[~idx_train] y_train_binary = (y_train > np.median(y_train)).astype(int) y_test_binary = (y_test > np.median(y_test)).astype(int) # Define sensitive features (e.g., 'RM', 'LSTAT') sensitive_features = ['RM', 'LSTAT'] # Create a pipeline with Logistic Regression and DemographicParityClassifier clf = DemographicParityClassifier(sensitive_cols=sensitive_features, covariance_threshold=0.01) clf.fit(X_train, y_train_binary) print(f"Demographic Parity Classifier Accuracy: {clf.score(X_test, y_test_binary):.3f}") print(f"Demographic Parity Classifier Fairness Score: {p_percent_score(clf, X_test, y_test_binary):.3f}") ``` -------------------------------- ### TimeGapSplit Example 4: No Train Duration Specified Source: https://github.com/koaning/scikit-lego/blob/main/docs/user-guide/cross-validation.md Demonstrates TimeGapSplit when `train_duration` is not explicitly passed. The training duration is automatically set to the maximum possible without overlapping validation folds. ```python from sklearn.model_selection import TimeGapSplit tss = TimeGapSplit(window="expanding", test_size=10) plot_split(tss, X, y, title="TimeGapSplit - Example 4 (no train_duration)") ``` -------------------------------- ### GMMOutlierDetector with Different Thresholds Source: https://github.com/koaning/scikit-lego/blob/main/docs/user-guide/mixture-methods.md Illustrates using GMMOutlierDetector with different thresholding strategies, specifically 'quantile' and 'stddev'. This allows for more granular control over outlier selection. ```python from sklearn.model_selection import train_test_split from sklearn.datasets import make_blobs from sklego.mixture import GMMOutlierDetector X, y = make_blobs(n_samples=500, centers=1, cluster_std=2.0, random_state=42) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) detector_quantile = GMMOutlierDetector(threshold_method='quantile', random_state=42) detector_quantile.fit(X_train) detector_stddev = GMMOutlierDetector(threshold_method='stddev', random_state=42) detector_stddev.fit(X_train) print(f"Quantile threshold score: {detector_quantile.score(X_test)}") print(f"Stddev threshold score: {detector_stddev.score(X_test)}") ```