Source code for causalexplain.estimators.cam.train_GAMboost
"""
This Python version attempts to replicate the functionality of the R function.
Here are some key points:
1. We use pandas for data manipulation and sklearn for machine learning components.
2. The bbs function in R is approximated using SplineTransformer from scikit-learn.
3. Instead of mboost_fit, we use GradientBoostingRegressor from scikit-learn.
4. The function returns a dictionary with the same keys as the R version.
Note that this is an approximation, as the exact behavior of bbs and mboost_fit in R
might differ from the Python implementations. You may need to fine-tune parameters
or use different libraries for a more exact replication of the R function's behavior.
"""
import numpy as np
import pandas as pd
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.preprocessing import SplineTransformer
[docs]
def train_GAMboost(X, y, pars=None):
"""_summary_
Args:
X (_type_): _description_
y (_type_): _description_
pars (_type_, optional): _description_. Defaults to None.
Returns:
_type_: _description_
"""
# Convert X to DataFrame if it's not already
dat = pd.DataFrame(X)
# Create spline features for each column
spline_features = []
for column in dat.columns:
spline = SplineTransformer(n_knots=5, degree=3)
spline_features.append(spline.fit_transform(dat[[column]]))
# Concatenate all spline features
X_spline = np.hstack(spline_features)
# Fit Gradient Boosting model
gb = GradientBoostingRegressor()
gb.fit(X_spline, y)
# Prepare results
result = {
'Yfit': gb.predict(X_spline),
'residuals': y - gb.predict(X_spline),
'model': gb
}
return result