λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Machine Learning/scikit-learn

[데이터 μ „μ²˜λ¦¬] Label encoding(λ ˆμ΄λΈ” 인코딩)

by ISLA! 2023. 9. 27.

 

🧐 인코딩은 μ™œ ν•„μš”ν• κΉŒ?

  • μ‚¬μ΄ν‚·λŸ°μ˜ λ¨Έμ‹ λŸ¬λ‹ μ•Œκ³ λ¦¬μ¦˜μ€ λ¬Έμžμ—΄ 값을 μž…λ ₯κ°’μœΌλ‘œ ν—ˆμš©ν•˜μ§€ μ•ŠλŠ”λ‹€.
  • λ”°λΌμ„œ λͺ¨λ“  λ¬Έμžμ—΄ 값은 인코딩 λ˜μ„œ 숫자 ν˜•μœΌλ‘œ λ³€ν™˜ν•΄μ•Ό ν•œλ‹€. 
  • λ¬Έμžμ—΄ ν”Όμ²˜λŠ” 일반적으둜 μΉ΄ν…Œκ³ λ¦¬ν˜• ν”Όμ²˜μ™€ ν…μŠ€νŠΈν˜• ν”Όμ²˜λ₯Ό μ˜λ―Έν•˜λ©°, μ—¬κΈ°μ„œλŠ” μΉ΄ν…Œκ³ λ¦¬ν˜• 피쳐 인코딩에 λŒ€ν•΄ μ‚΄νŽ΄λ³Έλ‹€.
  • μΉ΄ν…Œκ³ λ¦¬ν˜• 피쳐 μΈμ½”λ”©μ—λŠ” λŒ€ν‘œμ μœΌλ‘œ λ ˆμ΄λΈ” 인코딩과, 원-ν•« 인코딩이 μžˆλ‹€. 

πŸ§‘‍πŸ’» λ ˆμ΄λΈ” 인코딩 유의점

  • λͺ‡λͺ‡ ML μ•Œκ³ λ¦¬μ¦˜μ—μ„œλŠ” 숫자 κ°’μ˜ 크고 μž‘μŒμ— λŒ€ν•œ νŠΉμ„±μ΄ μž‘μš©ν•˜μ—¬, 예츑 μ„±λŠ₯이 λ–¨μ–΄μ§ˆ 수 μžˆλ‹€.
  • λ”°λΌμ„œ μ„ ν˜• νšŒκ·€μ™€ 같은 ML μ•Œκ³ λ¦¬μ¦˜μ—λŠ” μ μš©ν•˜μ§€ μ•Šμ•„μ•Ό ν•œλ‹€.
  • 트리 κ³„μ—΄μ˜ ML μ•Œκ³ λ¦¬μ¦˜μ€ 숫자의 μ΄λŸ¬ν•œ νŠΉμ„±μ„ λ°˜μ˜ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ λ ˆμ΄λΈ” 인코딩도 별 λ¬Έμ œκ°€ μ—†λ‹€!

 

πŸš€ λ ˆμ΄λΈ” 인코딩 예제

  • λ ˆμ΄λΈ” 인코딩은 μ‚¬μ΄ν‚·λŸ°μ˜ LabelEncoder 클래슀둜 κ΅¬ν˜„ν•œλ‹€.
  • LabelEncoder 객체 생성 ➑ fit() ➑ transfrom() 을 ν˜ΈμΆœν•΄ λ ˆμ΄λΈ” 인코딩 μˆ˜ν–‰
  • μ•„λž˜ 예제λ₯Ό μ‚΄νŽ΄λ³΄μž
from sklearn.preprocessing import LabelEncoder

items = ['냉μž₯κ³ ', 'TV', 'μ „μžλ ˆμΈμ§€', '선풍기', 'TV']

encoder = LabelEncoder()
encoder.fit(items)
labels = encoder.transform(items)
print('인코딩 λ³€ν™˜κ°’: ', labels)
인코딩 λ³€ν™˜κ°’:  [1 0 3 2 0]

 

πŸš€ 인코딩 속성(classes) 확인

  • μœ„ μ˜ˆμ œλŠ” 데이터가 μž‘μ•„μ„œ κ°„λ‹¨νžˆ μ–΄λ–€ λ¬Έμžμ—΄μ΄ μ–΄λ–€ 숫자 κ°’μœΌλ‘œ 인코딩 λλŠ”μ§€ μ§κ΄€μ μœΌλ‘œ μ•ŒκΈ° μ–΄λ ΅λ‹€.
  • 이 경우, λ‹€μŒκ³Ό 같이 classes_ μ†μ„±κ°’μœΌλ‘œ ν™•μΈν•œλ‹€.
print('인코딩 클래슀: ', encoder.classes_)
인코딩 클래슀:  ['TV' '냉μž₯κ³ ' '선풍기' 'μ „μžλ ˆμΈμ§€']

 

πŸš€ λ””μ½”λ”©

  • inverse_transform() 을 톡해 μΈμ½”λ”©λœ 값을 λ‹€μ‹œ λ””μ½”λ”© ν•  수 μžˆλ‹€.
  • μ΄λ•Œ inverse_transfrom() 속성 μ•ˆμ— μΈμ½”λ”©λœ 값듀을 λ„£μ–΄μ£Όμ–΄μ•Ό ν•œλ‹€.
print('λ””μ½”λ”© 원본값: ', encoder.inverse_transform([1, 0, 3, 2, 0]))
λ””μ½”λ”© 원본값:  ['냉μž₯κ³ ' 'TV' 'μ „μžλ ˆμΈμ§€' '선풍기' 'TV']
728x90