Source code for pyreal.transformers.wrappers
import numpy as np
import pandas as pd
from pyreal.transformers import TransformerBase
[docs]class DataFrameWrapper(TransformerBase):
"""
Allows use of standard sklearn transformers while maintaining DataFrame type.
Same functionality as Transformer (kept for backwards compatibility).
"""
[docs] def __init__(self, wrapped_transformer, **kwargs):
"""
Initialize the wrapped transformer
Args:
wrapped_transformer:
"""
self.wrapped_transformer = wrapped_transformer
super().__init__(**kwargs)
def fit(self, x, **params):
"""
Fit the wrapped transformer
Args:
x (DataFrame of shape (n_instances, n_features)):
The dataset to fit to
**params:
Additional transformer parameters
Returns:
None
"""
self.wrapped_transformer.fit(x)
return super().fit(x)
def data_transform(self, x):
"""
Transform `x` using the wrapped transformer
Args:
x (DataFrame of shape (n_instances, n_features)):
The dataset to transform
Returns:
DataFrame of shape (n_instances, n_transformed_features):
The transformed dataset
"""
transformed_np = self.wrapped_transformer.transform(x)
return pd.DataFrame(transformed_np, columns=x.columns, index=x.index)
def inverse_data_transform(self, x_new):
"""
Inverse transform `x_new` using the wrapped transformer
Args:
x_new (DataFrame of shape (n_instances, n_transformed_features)):
The dataset to inverse transform
Returns:
DataFrame of shape (n_instances, n_features):
The dataset after inverse transform
"""
inv_transformed_data = self.wrapped_transformer.inverse_transform(x_new)
if isinstance(inv_transformed_data, np.ndarray):
return pd.DataFrame(inv_transformed_data, columns=x_new.columns, index=x_new.index)
else:
return inv_transformed_data