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

Chi-Square Test와 T-Test는 데이터 특성에 따라 선택하여 사용합니다.

Chi-Square Test와 T-Test는 데이터 특성에 따라 선택하여 사용합니다.

Chi-Square Test가 A/B/C Test에서 사용되는 구체적인 경우 * 범주형 데이터 분석: 각 그룹에서 클릭하거나 전환된 사람의 수를 비교할 때, 이 데이터를 범주형 변수로 간주하고 Chi-Square Test를 적용할 수 있습니다. * 다중 그룹 비교: A/B/C 테스트에서 세 개 이상의 그룹을 비교해야 할 때, Chi-Square Test는 모든 그룹 간의 독립성을

OLS 기반 인과추론 시 오차항 관련 체크 필요 가정

OLS 기반 인과추론 시 오차항 관련 체크 필요 가정

배경 * 아래 글을 DANBI에서 보다가 더 알아보게 되었습니다. OLS를 떠받치는 몇 개의 기둥이 있는데 그중 실용적으로 가장 중요한 것이 일치성(consistency)다. 쉽게 말해서 OLS를 통해 도출된 추정량이 있을 때 샘플사이즈가 커지면서 이 값이 참 값으로 접근한다는 것이다. 일치성이 충족되면 우리는 적당하게 큰 표본에 대해서 추정치가 좋은 속성을 지니고 있다고

인공지능이 문제가 아니라 결국 사람이 문제가 될 것입니다.

인공지능이 문제가 아니라 결국 사람이 문제가 될 것입니다.

사람들이 AI가 필요하다고 생각하는 시점 저 판사를 얼른 AI로 교체해야 한다. 유튜브에서 뉴스를 보다 보면 정말 많이 보이는 덧글입니다. 이러한 내용의 덧글이 달릴 때마다, 정말 많은 사람들이 공감을 표하곤 합니다. 왜 이렇게 사람들은 이러한 주장에 공감을 표하는 것일까? AI는 시킨대로 하기 때문에 공정하다는 인식 여러 이유가 있겠지만, 사람들은 아마 AI가

BG/NBD 모델은 고객 생애가치를 추정하는데 사용되는 확률 모델입니다.

BG/NBD 모델은 고객 생애가치를 추정하는데 사용되는 확률 모델입니다.

1. BG/NBD 모델이란? * BG/NBD(Beta-Geometric/Negative Binomial Distribution) 모델은 **고객의 생애 가치(Customer Lifetime Value, CLV)**를 추정하는 데 사용되는 확률적 모델입니다. * 특히 고객이 반복 구매를 할지, 아니면 더 이상 활동하지 않을지를 추정하는 데 유용합니다. 이 모델은 고객의 구매 행태를 두 가지 중요한 개념으로 나눕니다: * 고객은 활성(active)