개발로그필름

TransactionEncoder를 사용한 변환 본문

데이터분석가/데이터 TIL

TransactionEncoder를 사용한 변환

yuullog 2025. 2. 5. 07:47
728x90
반응형
SMALL
from mlxtend.preprocessing import TransactionEncoder

te = TransactionEncoder()
basket_encoded = te.fit(basket_data).transform(basket_data)
basket_df = pd.DataFrame(basket_encoded, columns=te.columns_)

- 장바구니 데이터를 One-Hot Encoding 형태의 이진 행렬로 변환하는 과정

- 이를 통해 Apriori 알고리즘 등 연관 규칙 분석을 수행할 수 있도록 데이터 변환

 

1. TransactionEncoder() 객체 생성

te = TransactionEncoder()

- TransactionEncoder() : 장바구니 데이터를 이진 행렬로 변환하는 도구

- mlxtend.preprocessing 라이브러리에 포함되어 있고 Apriori 및 FP-Growth 알고리즘과 함께 사용

 

2. .fit(basket_data).transform(basket_data)

basket_encoded = te.fit(basket_data).transform(basket_data)

- .fit(basket_data) : basket_data에서 고유한 제품명 목록 학습

- .transform(basket_data) : 각 거래(transaction)를 One-Hot Encoding된 이진행렬로 변환

 

예제 데이터
basket_data = [
    ['음료', '과자'], 
    ['과자', '라면', '음료'], 
    ['과자'], 
    ['라면', '과자']
]

 

변환된 결과 (basket_encoded)
[
    [True,  True,  False],   # '음료', '과자' 구매
    [True,  True,  True],    # '과자', '라면', '음료' 구매
    [False, True,  False],   # '과자'만 구매
    [False, True,  True]     # '라면', '과자' 구매
]

- True(1) / False(0)로 표현된 One-Hot Encoding 결과

 

3. 변환된 데이터를 DataFrame으로 저장

basket_df = pd.DataFrame(basket_encoded, columns=te.columns_)

- basket_encoded는 넘파이 배열 형태 이므로 판다스 데이터 프레임으로 변환

- columns=te.columns_를 사용해 각 열에 상품 이름 할당

 

최종 반환 결과 (basket_df)
음료 과자 라면
True True False
True True True
False True False
False True True

 

 

TransactionEncoder를 사용하는 이유

✅ (1) Apriori 및 연관 규칙 분석을 위한 필수 변환

Apriori 또는 FP-Growth 알고리즘을 사용할 때, 데이터는 이진 행렬(Binary Matrix) 형태여야 함.

TransactionEncoder를 사용하면 장바구니 데이터를 자동으로 변환해줌.

✅ (2) 간단한 One-Hot Encoding

pd.get_dummies() 같은 방법을 사용할 수도 있지만, TransactionEncoder가 장바구니 데이터에 최적화되어 있음.

반응형
LIST
Comments