Predictive Models
Linear CPM
LinearCPM
A PyTorch implementation of CPM optimized for speed.
Supports both regression and binary classification tasks. For classification, uses logistic regression (linear model + sigmoid).
Optimizations: 1. Vectorized Over Permutations: Fits all N_perms models in parallel. 2. Fast Cholesky Solver: Uses Normal Equations (XtX^-1 Xty) instead of SVD/QR. 3. Shared Covariate Logic: Handles fixed covariates efficiently.
Input Shapes: - X: [N_samples, N_features] - y: [N_samples, N_perms]
__init__(edges, device='cpu', task_type=TaskType.regression)
Args: edges: Boolean masks tensor with shape [N_features, 2, N_runs]. Dimension 1 corresponds to [Positive, Negative]. device: 'cpu' or 'cuda' task_type: TaskType.regression or TaskType.classification
fit(X, y, covariates)
Fits all CPM variations (Connectome, Covariates, Residuals, Full) for all permutations. Args: X: [N_samples, N_features] y: [N_samples, N_perms] covariates: [N_samples, N_cov]
get_network_strengths(X, covariates)
Calculates network strengths for ALL permutations simultaneously.
predict(X, covariates, return_proba=False)
Predicts y for all permutations.
Args: X: Features [N_samples, N_features] covariates: Covariates [N_samples, N_cov] return_proba: If True and task is classification, returns probabilities. If False and task is classification, returns class predictions (0/1). Ignored for regression.
Returns: Tensor with shape [N_samples, N_models, N_networks, N_runs]. - For regression: continuous predictions - For classification with return_proba=True: probabilities [0, 1] - For classification with return_proba=False: class labels {0, 1}
predict_class(X, covariates)
Predict class labels (0/1) for classification tasks.
Args: X: Features [N_samples, N_features] covariates: Covariates [N_samples, N_cov]
Returns: Tensor with shape [N_samples, N_models, N_networks, N_runs] containing class labels {0, 1}.
Note: Only applicable for classification tasks. For regression, returns same as predict().
predict_proba(X, covariates)
Predict class probabilities for classification tasks.
Args: X: Features [N_samples, N_features] covariates: Covariates [N_samples, N_cov]
Returns: Tensor with shape [N_samples, N_models, N_networks, N_runs] containing probabilities.
Note: Only applicable for classification tasks. For regression, returns same as predict().
Nonlinear CPM models
BaseCPM
Bases: ABC
Base class for non-linear CPM models.
Matches the tensor-based pipeline interface of LinearCPM but delegates the connectome and full model fitting to subclass-defined estimators (sklearn, pygam, etc.). Covariates and residuals models always use ordinary least-squares (LinearRegression).
Constructor
edges : tensor [N_features, 2, N_runs] device : str ('cpu' or 'cuda') — used only for output tensors task_type : TaskType — stored but not currently used (subclasses are regression-only; classification uses LinearCPM's IRLS)
fit(X, y, covariates)
Fit all CPM model variants for every permutation run.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
X
|
array - like[N_samples, N_features]
|
|
required |
y
|
array - like[N_samples, N_runs]
|
|
required |
covariates
|
array - like[N_samples, N_cov]
|
|
required |
fit_model(X, y)
abstractmethod
Return a fitted estimator for (X, y). X and y are numpy.
get_network_strengths(X, covariates)
Calculate network strengths for all runs.
Returns:
| Type | Description |
|---|---|
dict with "connectome" and "residuals" sub-dicts, each mapping
|
|
"positive"/"negative" to tensors [N_samples, N_runs].
|
|
predict(X, covariates, return_proba=False)
Predict for all runs.
Returns:
| Type | Description |
|---|---|
Tensor[N_samples, N_models, N_networks, N_runs]
|
|
predict_model(estimator, X)
Predict with a fitted estimator. Override for non-sklearn APIs.