Example #1
0
def decode(fitted_encoder: BaseEstimator, features: List[str],
           df: pd.DataFrame) -> pd.DataFrame:
    """
    Pipeline function to decode data with fitted sklearn OneHotEncoder.

    Parameters
    ----------
    fitted_encoder : sklearn OneHotEncoder
        Encodes input data.
    features : list
        List of categorical feature.
    df : pd.DataFrame
        Data we want to normalize

    Returns
    -------
    output : pd.DataFrame
        Whole DataFrame with encoded values
    """
    output = df.copy()
    encoded_features = fitted_encoder.get_feature_names(features)

    # Prevent errors for datasets without categorical data
    # inverse_transform cannot handle these cases
    if len(encoded_features) == 0:
        return output

    output[features] = fitted_encoder.inverse_transform(
        output[encoded_features])
    output = output.drop(encoded_features, axis=1)

    return output
Example #2
0
    def hook(self, model: BaseEstimator, history: History):
        noimages = self.datapoints.shape[0]
        latvar = model.transform(self.datapoints)
        konstrukt = model.inverse_transform(latvar())

        last = history.last()
        filename = 'rekonstrukt-%02de-%03db.png' % (last[1], last[2])

        img = visualize_reconstruction(self.datapoints, konstrukt, noimages)
        img.save(join(self.outdir, filename))
Example #3
0
def descale(fitted_scaler: BaseEstimator, features: List[str],
            df: pd.DataFrame) -> pd.DataFrame:
    """
    Pipeline function to de-normalize data with fitted sklearn scaler.

    Parameters
    ----------
    fitted_scaler : sklearn Scaler
        Normalizes input data
    features : list
        List of continuous feature
    df : pd.DataFrame
        Data we want to de-normalize

    Returns
    -------
    output : pd.DataFrame
        Whole DataFrame with de-normalized values

    """
    output = df.copy()
    output[features] = fitted_scaler.inverse_transform(output[features])

    return output
Example #4
0
def scaled_linspace(x: np.ndarray, y: np.ndarray, num: int,
                    scaler: BaseEstimator) -> np.ndarray:
    """Generate a linspace, evenly spaced according to the normalization

        Args:
            x (np.ndarray): First point
            y (np.ndarray): Sencond point
            num (int): Number of points (in between the two points)
            method (str): Normalization method

        Returns:
            np.ndarray: Sequence of points evenly spaced
        """
    # Normalize the points
    x = scaler.transform([x])[0]
    y = scaler.transform([y])[0]

    # Generate the linspace
    ls = np.linspace(x, y, num=num + 1, endpoint=True)

    # Unnormalize the points
    ls = scaler.inverse_transform(ls)

    return ls