nemos.identifiability_constraints.apply_identifiability_constraints_by_basis_component#
- nemos.identifiability_constraints.apply_identifiability_constraints_by_basis_component(basis, feature_matrix, add_intercept=True)[source]#
Apply identifiability constraint to a design matrix for each component of an additive basis.
- Parameters:
basis (
Basis
) – The basis that computedfeature_matrix
.feature_matrix (NDArray) – The feature matrix before applying the identifiability constraints.
add_intercept (
bool
) – Set to True if your model will add an intercept term, False otherwise.
- Return type:
Tuple
[NDArray, NDArray]- Returns:
constrained_x – The adjusted feature matrix after applying the identifiability constraints as numpy array.
kept_columns – Indices of the columns that are kept. This should be used for applying the same transformation to a feature matrix generated from different a set of inputs (as for a test set).
Examples
>>> import numpy as np >>> import jax >>> from nemos.identifiability_constraints import apply_identifiability_constraints_by_basis_component >>> from nemos.basis import BSplineEval >>> from nemos.glm import GLM >>> jax.config.update('jax_enable_x64', True) >>> # define a feature matrix >>> bas = BSplineEval(5) + BSplineEval(6) >>> feature_matrix = bas.compute_features(np.random.randn(100), np.random.randn(100)) >>> # apply constraints >>> constrained_x, kept_columns = apply_identifiability_constraints_by_basis_component(bas, feature_matrix) >>> constrained_x.shape (100, 9) >>> # generate a test set, shape (20, 11) >>> test_x = bas.compute_features(np.random.randn(20), np.random.randn(20)) >>> test_x.shape (20, 11) >>> # apply constraint to test set >>> test_x = test_x[:, kept_columns] >>> test_x.shape (20, 9) >>> # fit on train and predict on test set >>> rate = GLM().fit(constrained_x, np.random.poisson(size=100)).predict(test_x)