Source code for pyreal.transformers.generic_transformer

import pandas as pd

from pyreal.transformers import TransformerBase


[docs]class Transformer(TransformerBase): """ Wrap any transformer with a .fit() and .transform() method for use with Pyreal. Will convert outputs to DataFrames as needed. """
[docs] def __init__(self, wrapped_transformer, columns=None, **kwargs): self.wrapped_transformer = wrapped_transformer self.columns = columns super().__init__(**kwargs)
def fit(self, x, **params): if hasattr(self.wrapped_transformer, "fit"): if self.columns is None: self.wrapped_transformer.fit(x, **params) else: self.wrapped_transformer.fit(x[self.columns], **params) return super().fit(x) def data_transform(self, x): if self.columns is None: result = self.wrapped_transformer.transform(x) if not isinstance(result, pd.DataFrame): return pd.DataFrame(result, index=x.index, columns=x.columns) return result else: x = x.copy() x[self.columns] = self.wrapped_transformer.transform(x[self.columns]) return x def inverse_data_transform(self, x_new): if self.columns is None: result = self.wrapped_transformer.inverse_transform(x_new) if not isinstance(result, pd.DataFrame): return pd.DataFrame(result, index=x_new.index, columns=x_new.columns) return result else: x_new = x_new.copy() x_new[self.columns] = self.wrapped_transformer.inverse_transform(x_new[self.columns]) return x_new @staticmethod def from_transform_function(transform_func): class WrappedTransformer(TransformerBase): def data_transform(self, x): return transform_func(x) return Transformer(WrappedTransformer())