From 1668225dc57156dea15a7e21fb7e7db591f2419d Mon Sep 17 00:00:00 2001 From: John Kitchin Date: Tue, 9 Jul 2024 10:30:36 -0400 Subject: [PATCH] add sklearn__init, lruq and updates on lhc --- pycse/sklearn/__init__.py | 0 pycse/sklearn/lhc.py | 4 +++- pycse/sklearn/lr_uq.py | 22 ++++++++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 pycse/sklearn/__init__.py create mode 100644 pycse/sklearn/lr_uq.py diff --git a/pycse/sklearn/__init__.py b/pycse/sklearn/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/pycse/sklearn/lhc.py b/pycse/sklearn/lhc.py index ae114d6f..15124f41 100644 --- a/pycse/sklearn/lhc.py +++ b/pycse/sklearn/lhc.py @@ -147,7 +147,9 @@ def anova(self): table = np.vstack([ns.index.values, ns.values, ns > fc]).T - return pd.DataFrame(table, columns=[f"{self.y} effect", "F-score", "Significant"]) + return pd.DataFrame( + table, columns=[f"{self.y} effect", f"F-score (fc={fc:1.1f})", "Significant"] + ) def predict(self, args): """Predict the response for ARGS. ARGS is a list of labels in order diff --git a/pycse/sklearn/lr_uq.py b/pycse/sklearn/lr_uq.py new file mode 100644 index 00000000..86a105b6 --- /dev/null +++ b/pycse/sklearn/lr_uq.py @@ -0,0 +1,22 @@ +""" +A Linear regressor with uncertainty quantification. +""" +import numpy as np +from pycse import regress +from pycse import predict as _predict +from sklearn.base import BaseEstimator, RegressorMixin + + +class LinearRegressionUQ(BaseEstimator, RegressorMixin): + def fit(self, X, y): + self.xtrain = np.array(X) + self.ytrain = np.array(y) + self.coefs_, self.pars_cint, self.pars_se = regress(X, y, rcond=None) + return self + + def predict(self, X, return_std=False): + y, _, se = _predict(self.xtrain, self.ytrain, self.coefs_, X) + if return_std: + return y, se + else: + return y