NamedTuple을 이용한 가독성 개선 목적의 리팩토링

NamedTuple을 이용한 가독성 개선 목적의 리팩토링
Photo by Kevin Canlas / Unsplash

Tuple Unpacking 이란

  • 하나의 튜플(tuple)을 여러 개의 변수로 분해하여 사용하는 것
a, b, c = (1, 2, 3)

문제점

  • 변수 갯수가 맞지 않을 때
# 예시 코드: 변수 갯수 불일치
result = (0.8, 0.1)
accuracy, loss, precision = result  # ValueError 발생
  • 의미없는 변수 이름을 사용시 → 이후에 가독성 이슈
# 예시 코드: 의미 없는 변수 이름
a, b, c = model.predict(X_test)

리팩토링

  • 명시적인 변수 명 사용
# 리팩토링 코드: 명시적인 변수 이름 사용
accuracy, loss = model.predict(X_test)[:2]
precision = model.predict(X_test)[2]  # precision을 나중에 따로 할당

  • NamedTuple 사용
  • Dict를 써도 되나, 아래의 경우를 고려시 Named Tuple이 더 나을 수 있음
    • 데이터가 고정된 구조를 가지고 있으며, 데이터가 불변이어야 할 때
    • 성능(특히 메모리 사용량 및 접근 속도)이 중요한 경우
    • 코드의 가독성과 명확성이 중요한 경우
from collections import namedtuple

# NamedTuple 사용 예시
Prediction = namedtuple('Prediction', ['accuracy', 'loss', 'precision'])
result = Prediction(accuracy=0.8, loss=0.1, precision=0.85)

print(result.accuracy)  # 0.8
print(result.loss)      # 0.1
print(result.precision) # 0.85

  • Dictionary 사용
  • Dict를 사용하는게 더 나을 경우
    • 데이터 구조가 유연하게 변경될 가능성이 있을 때
    • 키-값 쌍을 동적으로 추가, 수정, 삭제할 필요가 있을 때
    • Python의 다른 라이브러리 및 함수와의 통합이 중요한 경우
# 딕셔너리 사용 예시
result = {'accuracy': 0.8, 'loss': 0.1, 'precision': 0.85}

print(result['accuracy'])  # 0.8
print(result['loss'])      # 0.1
print(result['precision']) # 0.85

Read more

다중공선성은 잘못된 인과추론 결과를 만들어낼 수 있습니다.

다중공선성은 잘못된 인과추론 결과를 만들어낼 수 있습니다.

다중공선성(Multi Collinearity) * **Multi-Collinearity(다중공선성)**는 독립 변수들 간의 강한 상관관계가 존재할 때 발생합니다. 즉, 한 독립 변수가 다른 독립 변수에 의해 설명될 수 있을 정도로 상관관계가 높은 상황을 의미합니다. * 이 문제는 주로 회귀 분석에서 나타나며, 변수들 간의 관계를 해석하는 데 있어 큰 장애물이 될 수 있습니다. * 일반적인 회귀식을 $Y=

Bayesian P-Value는 불확실성을 감안하여 모델의 적합도를 평가합니다.

Bayesian P-Value는 불확실성을 감안하여 모델의 적합도를 평가합니다.

Bayesian P- Value * Bayesian P-Value는 **모델의 적합도(goodness-of-fit)**를 평가하는 데 사용됩니다. * 사후 분포(posterior distribution)를 이용하여 실제 데이터와 모델이 생성한 예상 데이터를 비교함으로써, 관측된 데이터가 모델에 의해 얼마나 잘 설명되는지를 평가합니다. * 빈도주의 p-값은 "관찰된 데이터보다 극단적인 데이터가 나올 확률"을 계산하지만, Bayesian P-Value는 "모델이 실제

Non-Identifiability는 Model Parameter를 고유하게 식별할 수 없는 현상입니다.

Non-Identifiability는 Model Parameter를 고유하게 식별할 수 없는 현상입니다.

Non Identifiability * Non-Identifiability는 주어진 데이터와 모델에 대해 특정 파라미터를 고유하게 식별할 수 없는 상황을 의미합니다. 즉, 여러 파라미터 값들이 동일한 데이터를 생성할 수 있으며, 이로 인해 특정 파라미터 값을 확정적으로 추정하기 어렵게 됩니다. * 베이지안 추론에서 Non-Identifiability는 사후 분포가 특정 파라미터 값에 대해 명확하게 수렴하지 않고, 여러 값들에 대해 비슷한 확률을

Rootgram은 큰 분산을 갖거나 비정규 형태의 데이터를 위한 히스토그램입니다.

Rootgram은 큰 분산을 갖거나 비정규 형태의 데이터를 위한 히스토그램입니다.

Rootgram * 히스토그램의 변형으로 데이터가 비정규적이거나 큰 분산을 가지는 경우, 정확한 분포를 파악하기 위해 사용됩니다. * 일반적으로 히스토그램은 데이터의 빈도를 직접적으로 나타내기 때문에, 큰 값이 빈번하게 발생하는 경우 상대적으로 작은 값을 잘 드러내지 못하는 경향이 있습니다. 반면, Rootgram은 빈도를 제곱근 형태로 변환하여, 데이터 분포의 차이를 더 잘 시각화할 수 있도록 돕습니다 * 여기서