Source code for lpspline.spline.constant
from .base import Spline
import cvxpy as cp
from typing import List, Optional
import numpy as np
[docs]
class Constant(Spline):
"""
Constant spline intercept representation.
"""
def __init__(self, term: str, tag: Optional[str] = 'constant'):
"""
Initialize the Constant intercept model component.
Parameters
----------
term : str
A descriptive string, e.g. "intercept".
tag : Optional[str], default='constant'
A tag for categorical identification.
"""
super().__init__(term=term, tag=tag)
self._variables = []
def _build_basis(self, x: np.ndarray) -> np.ndarray:
"""
Builds the Constant basis function uniformly evaluating to `1.0`.
Parameters
----------
x : np.ndarray
Input distribution array used functionally to match the matrix dimensional length.
Returns
-------
np.ndarray
A 2D matrix of shape `(n_samples, 1)` entirely populated of ones.
"""
return np.ones((len(x), 1))
def _build_variables(self) -> cp.Variable:
"""
Create the CVXPY variable for the sole intercept coefficient.
Returns
-------
cp.Variable
A scalar CVXPY Variable initialized effectively as an array of shape `(1,)`.
"""
if not self._variables:
self._variables = cp.Variable(shape=(1,), name=f"{self.term}_constant")
return self._variables
def __repr__(self):
return f"Constant(term='{self.term}')"