def get_x_y(data):
    """Return the features (X) and target (y) for Ames Housing Dataset.

    These values were chosen initially by investigating univariate comparisons with boxplots and scatter plots between features and Log Saleprice. Log transformed features are used in cases where a log transformation turned a right-skewed distribution into a normal distribution.

    :param data: pd.DataFrame. Dataframe containing the Ames Housing Dataset.
    :returns: (pd.DataFrame, pd.Series). The features and target variable

    """
    features = [
        "1stFlrSF_log",
        "2ndFlrSF",
        "TotalBsmtSF",
        "GarageArea",
        "GrLivArea_log",
        "LotArea_log",
        "LotFrontage_log",
        "MasVnrArea",
        "WoodDeckSF",
        "BsmtFinSF1",
        "BsmtUnfSF",
        "EnclosedPorch",
        "ScreenPorch",
        "FullBath",
        "TotRmsAbvGrd",
    ]
    indicator_cols_dirty = set(data.filter(like="_")).difference(set(features))
    indicator_cols_clean = list(
        filter(lambda _: "_log" not in _, indicator_cols_dirty))
    X = data[features + indicator_cols_clean]
    y = data["SalePrice_log"]

    return X, y