프젝2 코드리뷰
이번엔 코드리뷰를 조 상관없이 쭉 쓰려고 한다.
# 주기성 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했는데 그냥 코드 나열해놓은 다음 나중에 코드 다 짜고 저거 하나 실행하면 된다는거 아니야? 편할거 같은데?