이번엔 코드리뷰를 조 상관없이 쭉 쓰려고 한다.

# 주기성 feature 생성
        self.create_seasonal_features()

        # 강남역까지 거리 feature 생성

merge_all에서 호출되는 private method가 많습니다. 파이썬은 접근 제어자가 없으므로 메소드 명 앞에 “_” 를 붙임으로써 private method 임을 암시해주어야 합니다.

아하. 파이썬은 java와 달리 접근 제어자가 따로 없으므로 언더바로 체크해주는 구낭.


def load_params(model_name, model_type):
    """
    특정 모델과 유형에 맞는 하이퍼파라미터를 YAML 파일에서 불러옴.
    
    Args:
        model_name (str): 불러올 모델 이름, "LGBM", "XGB", "Catboost", "RF", "LR" 중 하나여야 함.
        model_type (str): 모델 유형, "classifier" 또는 "regressor" 중 하나여야 함.
    """

docstring의 Args에 잘 적어주시긴 하셨습니다만, 다른 파일의 코드들은 타입이 명시되어 있으므로 통일성을 위해 argment에 타입 힌트를 명시하면 더 좋을 것 같습니다.

아래처럼 수정하면 될 것 같다. 타입힌팅 넘 어렵다.

def load_params(model_name: str, model_type: str) -> dict:
    """
    특정 모델과 유형에 맞는 하이퍼파라미터를 YAML 파일에서 불러옴.
    
    Args:
        model_name (str): 불러올 모델 이름, "LGBM", "XGB", "Catboost", "RF", "LR" 중 하나여야 함.
        model_type (str): 모델 유형, "classifier" 또는 "regressor" 중 하나여야 함.
        
    Returns:
        dict: 모델 하이퍼파라미터가 담긴 딕셔너리
    """

이외 다른 params나 columns 경로 sql 등을 config나 yaml로 관리하자.


    test_data['target_encoded_deposit'] = test_data['cluster'].map(cluster_target_mean_deposit)

    # 타겟 인코딩 후 price_per_area 변수 제거
    train_data.drop(columns=['price_per_area'], inplace=True)

inplace=True의 사용은 그리 좋지 않은 것으로 알려져 있습니다. 아래 글을 참고해보셔도 좋을 것 같아요.

Why You Should Probably Never Use pandas inplace=True

아무래도 원본데이터를 훼손하다 보니까 그런가? 사실 굳이 안쓰긴 한다.


from utils.common_utils import *
import pandas as pd
import numpy as np
import os

import 정렬이 되면 더 좋았겠습니다.

  • isort: 파이썬 코드 내 import 문을 자동으로 정렬 - https://wikidocs.net/236791

와. 이런게 있었네? 매번 대충 자리 유추해서 import했는데 그냥 코드 나열해놓은 다음 나중에 코드 다 짜고 저거 하나 실행하면 된다는거 아니야? 편할거 같은데?