-
Notifications
You must be signed in to change notification settings - Fork 63
Description
Hello,
I am trying to use skfda.ml.regression.LinearRegression for a functional linear regression task with TensorBasis. My functional data is defined on a 2D domain (time grid of hours and days). I used a TensorBasis consisting of a FourierBasis (for hours) and a BSplineBasis (for days) to represent my functional data. However, an error is raised during model fitting:
Here is a simplified example of my setup:
import numpy as np
from skfda.representation.grid import FDataGrid
from skfda.representation.basis import TensorBasis, FourierBasis, BSplineBasis
from skfda.ml.regression import LinearRegression
import pandas as pd
hours = np.linspace(1, 24, 24)
days = np.linspace(1, 7, 7)
grid_points = [hours, days]
N = 10 # Number of samples
x_data = np.random.rand(N, 24, 7) # Functional covariates
y_data = np.random.rand(N, 24, 7) # Functional response
x_grid = FDataGrid(data_matrix=x_data, grid_points=grid_points)
y_grid = FDataGrid(data_matrix=y_data, grid_points=grid_points)
# Define basis for TensorBasis representation
x_basis = TensorBasis([
FourierBasis(n_basis=3, domain_range=(1, 24)),
BSplineBasis(n_basis=4, domain_range=(1, 7)),
])
y_basis = TensorBasis([
FourierBasis(n_basis=3, domain_range=(1, 24)),
BSplineBasis(n_basis=4, domain_range=(1, 7)),
])
# Convert FDataGrid to basis representation
X_train = pd.DataFrame({"covariate": x_grid.to_basis(x_basis)})
Y_train = y_grid.to_basis(y_basis)
linear_reg = LinearRegression(coef_basis=[x_basis])
linear_reg.fit(X_train, Y_train)
Error Message:
TypeError: LinearRegression._weighted_inner_product_integrate.<locals>.integrand() takes 1 positional argument but 2 were given
Environment:
scikit-fda version: [0.9.2.dev0]
Python version: [3.10.15]
I would like to know if LinearRegression currently supports using TensorBasis? If it does, are there any specific configurations or settings required for it to work properly?
Thank you for your attention.