Part 1. Import & Data Check

데이터 확인

# train과 test 데이터 불러오기
df_train = pd.read_csv("/kaggle/input/house-prices-advanced-regression-techniques/train.csv")
df_test = pd.read_csv("/kaggle/input/house-prices-advanced-regression-techniques/test.csv")
df_train.head()

스크린샷 2022-06-05 오후 11.56.22.png

df_train.shape, df_test.shape
# 변수가 많기 때문에 편의상 Numerical feature와 Categorical feature를 나눠놓도록 합니다.
# 수치형 변수는 38개, 범주형 변수는 43개로 이루어져 있습니다.

numerical_feats = df_train.dtypes[df_train.dtypes != "object"].index
print("Number of Numerical features: ", len(numerical_feats))

categorical_feats = df_train.dtypes[df_train.dtypes == "object"].index
print("Number of Categorical features: ", len(categorical_feats)

스크린샷 2022-06-05 오후 11.47.49.png

print(df_train[numerical_feats].columns)
print("*"*80)
print(df_train[categorical_feats].column

스크린샷 2022-06-05 오후 11.48.34.png

이상치 탐색 및 제거

def detect_outliers(df, n, features):
    outlier_indices = []
    for col in features:
        Q1 = np.percentile(df[col], 25)
        Q3 = np.percentile(df[col], 75)
        IQR = Q3 - Q1
        
        outlier_step = 1.5 * IQR
        
        outlier_list_col = df[(df[col] < Q1 - outlier_step) | (df[col] > Q3 + outlier_step)].index
        outlier_indices.extend(outlier_list_col)
    outlier_indices = Counter(outlier_indices)
    multiple_outliers = list(k for k, v in outlier_indices.items() if v > n)
        
    return multiple_outliers
        
Outliers_to_drop = detect_outliers(df_train, 2, ['Id', 'MSSubClass', 'LotFrontage', 'LotArea', 'OverallQual',
       'OverallCond', 'YearBuilt', 'YearRemodAdd', 'MasVnrArea', 'BsmtFinSF1',
       'BsmtFinSF2', 'BsmtUnfSF', 'TotalBsmtSF', '1stFlrSF', '2ndFlrSF',
       'LowQualFinSF', 'GrLivArea', 'BsmtFullBath', 'BsmtHalfBath', 'FullBath',
       'HalfBath', 'BedroomAbvGr', 'KitchenAbvGr', 'TotRmsAbvGrd',
       'Fireplaces', 'GarageYrBlt', 'GarageCars', 'GarageArea', 'WoodDeckSF',
       'OpenPorchSF', 'EnclosedPorch', '3SsnPorch', 'ScreenPorch', 'PoolArea',
       'MiscVal', 'MoSold', 'YrSold'])

IQR(튜키의 방법)을 이용한 함수를 지정하여  탐색 기준을 잡습니다. 지정된 함수를 사용하여 train 데이터의 이상치 탐색을 수행합니다.

df_train.loc[Outliers_to_drop]

스크린샷 2022-06-05 오후 11.57.08.png