pvar_dashboard / src /models /baseline.py
F1nnSBK's picture
Deploy Photovoltaik Risiko-Manager dashboard to Hugging Face Spaces
5841846
Raw
History Blame Contribute Delete
1.19 kB
import statsmodels.api as sm
import pandas as pd
import numpy as np
class OLSBaseline:
"""
Ordinary Least Squares (OLS) Multiple Regression baseline model.
Encapsulates statsmodels OLS with automatic intercept handling.
"""
def __init__(self):
self.model = None
self.results = None
self.params = None
def fit(self, X: pd.DataFrame, y: pd.Series):
"""Fits the OLS model on the training features X and target y."""
X_sm = sm.add_constant(X)
self.model = sm.OLS(y, X_sm)
self.results = self.model.fit()
self.params = self.results.params
return self
def predict(self, X: pd.DataFrame) -> np.ndarray:
"""Generates predictions for the given features X."""
if self.results is None:
raise ValueError("Model is not fitted yet. Call fit() first.")
X_sm = sm.add_constant(X, has_constant='add')
return self.results.predict(X_sm).values
def summary(self) -> str:
"""Returns the summary of the fitted regression model."""
if self.results is None:
return "Model not fitted yet."
return self.results.summary().as_text()