๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Project ESG+AI/Tech Basics

40์ผ์ฐจ. IT ๊ฐœ๋… ์ •๋ฆฌ

by GreenJin_S2 2025. 12. 8.


ํŒŒ์ด์ฌ์—์„œ ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ค˜

 

๐Ÿ ํŒŒ์ด์ฌ ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜ ํ•œ ๋ฒˆ์— ์ดํ•ดํ•˜๊ธฐ

๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜(List Comprehension)์€ **๊ธฐ์กด ๋ฆฌ์ŠคํŠธ๋‚˜ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด(iterable)**๋กœ๋ถ€ํ„ฐ ์ƒˆ๋กœ์šด ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ๋งŒ๋“œ๋Š” ํŒŒ์ด์ฌ ๋ฌธ๋ฒ•์ž…๋‹ˆ๋‹ค.
ํ•œ๊ตญ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ž์ฃผ ์“ฐ๋Š” ๋ฌธ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ, ์ฝ”๋“œ๊ฐ€ ํ•œ ์ค„๋กœ ๊น”๋”ํ•ด์ ธ ๊ฐ€๋…์„ฑ๋„ ์ข‹์•„์ง‘๋‹ˆ๋‹ค.

 

ํŒŒ์ด์ฌ ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜(List Comprehension)์ด๋ž€?

๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜์€ ํŒŒ์ด์ฌ์—์„œ ์ƒˆ๋กœ์šด ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ„๊ฒฐํ•˜๊ณ  ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์ด์—์š”. ๊ธฐ์กด ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ๋กœ์šด ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜, ์–ด๋–ค ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์š”์†Œ๋“ค๋กœ๋งŒ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ฑ„์šฐ๊ณ  ์‹ถ์„ ๋•Œ ์ •๋ง ๋น›์„ ๋ฐœํ•˜์ฃ ! ๋งˆ์น˜ ์งง์€ ์ฝ”๋“œ ํ•œ ์ค„๋กœ ๊ธด ๋ฐ˜๋ณต๋ฌธ ์ฝ”๋“œ๋ฅผ ์••์ถ•ํ•ด ๋†“์€ ๊ฒƒ๊ณผ ๊ฐ™์•„์š”.

๐Ÿ’ก ์™œ ์“ธ๊นŒ์š”?

  1. ์ฝ”๋“œ ๊ฐ„๊ฒฐ์„ฑ: ์ฝ”๋“œ๋ฅผ ํ›จ์”ฌ ์งง๊ณ  ์ฝ๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด์ค˜์š”.
  2. ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ: ํ•œ ๋ˆˆ์— ์–ด๋–ค ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋Š”์ง€ ํŒŒ์•…ํ•˜๊ธฐ ์‰ฌ์›Œ์š”.
  3. ์„ฑ๋Šฅ ํ–ฅ์ƒ: ๋•Œ๋กœ๋Š” ์ผ๋ฐ˜ for ๋ฃจํ”„๋ณด๋‹ค ๋” ๋น ๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๊ธฐ๋„ ํ•ด์š”.

๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ• ๊ตฌ์กฐ

๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ํ˜•ํƒœ๋Š” ์ด๋ ‡์Šต๋‹ˆ๋‹ค:

python

์ƒˆ๋กœ์šด_๋ฆฌ์ŠคํŠธ = [ํ‘œํ˜„์‹ for ํ•ญ๋ชฉ in ์ดํ„ฐ๋Ÿฌ๋ธ” ๊ฐ์ฒด]
  • ํ‘œํ˜„์‹(Expression): ํ•ญ๋ชฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•  ๊ฐ’์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. (์˜ˆ: x * 2, x.upper())
  • ํ•ญ๋ชฉ(Item): ์ดํ„ฐ๋Ÿฌ๋ธ” ๊ฐ์ฒด์—์„œ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์˜จ ์š”์†Œ์ž…๋‹ˆ๋‹ค.
  • ์ดํ„ฐ๋Ÿฌ๋ธ” ๊ฐ์ฒด(Iterable): ๋ฆฌ์ŠคํŠธ, ํŠœํ”Œ, ๋ฌธ์ž์—ด, range ๋“ฑ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด๋ฅผ ์˜๋ฏธํ•ด์š”.

๊ธฐ๋ณธ ๋ฌธ๋ฒ•

Python
 
[ํ‘œํ˜„์‹ for ํ•ญ๋ชฉ in iterable if ์กฐ๊ฑด]
  • ํ‘œํ˜„์‹: ์ƒˆ ๋ฆฌ์ŠคํŠธ์— ๋“ค์–ด๊ฐˆ ๊ฐ’ (ํ•ญ๋ชฉ์„ ๊ฐ€๊ณตํ•  ์ˆ˜ ์žˆ์Œ)
  • for ํ•ญ๋ชฉ in iterable: ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์˜ด
  • if ์กฐ๊ฑด (์„ ํƒ): ์กฐ๊ฑด์ด True์ธ ํ•ญ๋ชฉ๋งŒ ์‚ฌ์šฉ

 

์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด ์•Œ์•„๋ณผ๊นŒ์š”?

1. ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ฆฌ์ŠคํŠธ ๋งŒ๋“ค๊ธฐ (For ๋ฃจํ”„ vs. ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜)

์ˆซ์ž 1๋ถ€ํ„ฐ 5๊นŒ์ง€๋ฅผ ์ œ๊ณฑํ•œ ๊ฐ’๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋ณผ๊ฒŒ์š”.

  • ์ผ๋ฐ˜ for ๋ฃจํ”„ ๋ฐฉ์‹:
  • squares = [] for x in range(1, 6): squares.append(x**2) print(squares) # ๊ฒฐ๊ณผ: [1, 4, 9, 16, 25]
  • ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜ ๋ฐฉ์‹:์–ด๋•Œ์š”? ํ›จ์”ฌ ๊น”๋”ํ•˜๊ณ  ๊ฐ„๊ฒฐํ•˜์ฃ ?
  • squares = [x**2 for x in range(1, 6)] print(squares) # ๊ฒฐ๊ณผ: [1, 4, 9, 16, 25]

2. ์กฐ๊ฑด๋ฌธ(if)์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํ•„ํ„ฐ๋งํ•˜๊ธฐ

์ด๋ฒˆ์—๋Š” 1๋ถ€ํ„ฐ 10๊นŒ์ง€์˜ ์ˆซ์ž ์ค‘์—์„œ ์ง์ˆ˜๋งŒ ๊ณจ๋ผ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋ณผ๊ฒŒ์š”.

  • ์ผ๋ฐ˜ for ๋ฃจํ”„ ๋ฐฉ์‹:
  • evens = [] for x in range(1, 11): if x % 2 == 0: evens.append(x) print(evens) # ๊ฒฐ๊ณผ: [2, 4, 6, 8, 10]
  • ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜ ๋ฐฉ์‹:for ๋ฌธ ๋’ค์— if ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ผ์š”!
  • evens = [x for x in range(1, 11) if x % 2 == 0] print(evens) # ๊ฒฐ๊ณผ: [2, 4, 6, 8, 10]

3. ์ค‘์ฒฉ๋œ for ๋ฃจํ”„ ์‚ฌ์šฉํ•˜๊ธฐ

์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ•ฉ์น˜๊ฑฐ๋‚˜, ์ค‘์ฒฉ๋œ ๊ตฌ์กฐ๋ฅผ ํ•œ ์ค„๋กœ ํŽผ์น˜๊ณ  ์‹ถ์„ ๋•Œ๋„ ์œ ์šฉํ•ด์š”.

  • ์˜ˆ์‹œ: 2์ฐจ์› ๋ฆฌ์ŠคํŠธ๋ฅผ 1์ฐจ์› ๋ฆฌ์ŠคํŠธ๋กœ ํŽผ์น˜๊ธฐ (Flatten) ๋งˆ์น˜ for ๋ฃจํ”„๋ฅผ ์“ฐ๋Š” ์ˆœ์„œ์™€ ๋™์ผํ•˜๊ฒŒ ์ปดํ”„๋ฆฌํ—จ์…˜ ์•ˆ์—์„œ for ๋ฌธ์„ ์—ฌ๋Ÿฌ ๊ฐœ ์“ธ ์ˆ˜ ์žˆ์–ด์š”.
  • matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] # ์ผ๋ฐ˜ for ๋ฃจํ”„ flat_list_for = [] for row in matrix: for num in row: flat_list_for.append(num) print(flat_list_for) # ๊ฒฐ๊ณผ: [1, 2, 3, 4, 5, 6, 7, 8, 9] # ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜ flat_list_comp = [num for row in matrix for num in row] print(flat_list_comp) # ๊ฒฐ๊ณผ: [1, 2, 3, 4, 5, 6, 7, 8, 9]

๐ŸŒŸ ์ž ๊น! ํ‘œํ˜„์‹ ์•ˆ์—๋„ if-else๋ฅผ ์“ธ ์ˆ˜ ์žˆ์–ด์š”!

์กฐ๊ธˆ ๋” ๋ณต์žกํ•œ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๊ฐ’์„ ๋‹ค๋ฅด๊ฒŒ ๋„ฃ๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•ด์š”. ์ด ๋•Œ๋Š” if-else๊ฐ€ for ๋ฌธ ์•ž์— ์œ„์น˜ํ•˜๋Š” ๊ฒƒ์„ ์ฃผ์˜ํ•ด์•ผ ํ•ด์š”!

python

# 1๋ถ€ํ„ฐ 10๊นŒ์ง€์˜ ์ˆซ์ž ์ค‘, ์ง์ˆ˜๋Š” '์ง์ˆ˜', ํ™€์ˆ˜๋Š” 'ํ™€์ˆ˜'๋ผ๊ณ  ํ‘œ์‹œํ•˜๊ธฐ
result = ['์ง์ˆ˜' if x % 2 == 0 else 'ํ™€์ˆ˜' for x in range(1, 11)]
print(result)
# ๊ฒฐ๊ณผ: ['ํ™€์ˆ˜', '์ง์ˆ˜', 'ํ™€์ˆ˜', '์ง์ˆ˜', 'ํ™€์ˆ˜', '์ง์ˆ˜', 'ํ™€์ˆ˜', '์ง์ˆ˜', 'ํ™€์ˆ˜', '์ง์ˆ˜']

 

 


๐Ÿ“Š ๋จธ์‹ ๋Ÿฌ๋‹ ๊ด€์  4๋Œ€ ์ฒ™๋„ + ์ „์ฒ˜๋ฆฌ ์š”์•ฝ (์ •๋ฆฌ ๋ฒ„์ „)

๐Ÿ”ฅ ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ ๊ด€์  ํ•ต์‹ฌ ์š”์•ฝ

  • Nominal → ๋ฐ˜๋“œ์‹œ One-hot
  • Ordinal → ์ˆœ์„œ ์ค‘์š”ํ•˜๋ฉด Ordinal Encoding / ์•„๋‹ˆ๋ฉด One-hot
  • Interval → Ratio์ฒ˜๋Ÿผ ์“ฐ๋˜ ๋น„์œจ ํ•ด์„์€ ๊ธˆ์ง€
  • Ratio → ์—ฐ์†ํ˜• ์ˆ˜์น˜ํ˜•, ์Šค์ผ€์ผ๋ง·๋กœ๊ทธ ๋ณ€ํ™˜ ์ ๊ทน ๊ณ ๋ ค

๐Ÿงฉ 4๋Œ€ ์ฒ™๋„ ์ƒ์„ธ ์ •๋ฆฌ

1๏ธโƒฃ Nominal (๋ช…๋ชฉ์ฒ™๋„)

โœ” ํŠน์ง•

  • ์ˆœ์„œ ์—†์Œ
  • ๊ฐ’ ์ž์ฒด์˜ ํฌ๊ธฐ ์˜๋ฏธ ์—†์Œ

โœ” ์˜ˆ์‹œ

  • ์„ฑ๋ณ„, ์ƒ‰์ƒ, Embarked(C/Q/S), ๊ตญ๊ฐ€ ๋“ฑ

โœ” ๋จธ์‹ ๋Ÿฌ๋‹ ๊ด€์ 

  • ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•ด๋„ ์ˆœ์„œ ์˜๋ฏธ๋ฅผ ๋ถ€์—ฌํ•˜๋ฉด ์•ˆ ๋จ

โœ” ์ „์ฒ˜๋ฆฌ

  • One-hot Encoding (๊ธฐ๋ณธ)
  • Binary Encoding (2๊ฐœ ๋ฒ”์ฃผ์ผ ๋•Œ)
  • Target Encoding (๋งŽ์€ ๋ฒ”์ฃผ ์ฒ˜๋ฆฌ ์‹œ)

โœ” ์ฃผ์˜

  • LabelEncoding ์‚ฌ์šฉ ์‹œ
    → ๋ชจ๋ธ์ด **‘์ˆœ์„œ๊ฐ€ ์žˆ๋‹ค’**๊ณ  ์ž˜๋ชป ํ•™์Šต
    → ์„ ํ˜• ๋ชจ๋ธ·ํŠธ๋ฆฌ ๋ชจ๋ธ ๋ชจ๋‘ ์œ„ํ—˜

2๏ธโƒฃ Ordinal (์„œ์—ด์ฒ™๋„)

โœ” ํŠน์ง•

  • ์ˆœ์„œ ์žˆ์Œ
  • ๊ฐ„๊ฒฉ์€ ์ผ์ •ํ•˜์ง€ ์•Š์Œ

โœ” ์˜ˆ์‹œ

  • ๋งŒ์กฑ๋„(๋ถˆ๋งŒ < ๋ณดํ†ต < ๋งŒ์กฑ < ๋งค์šฐ๋งŒ์กฑ)
  • ํ•™๋…„
  • ํƒ€์ดํƒ€๋‹‰ Pclass

โœ” ๋จธ์‹ ๋Ÿฌ๋‹ ๊ด€์ 

  • ์ˆœ์„œ๋Š” ์ค‘์š”ํ•œ ์‹ ํ˜ธ
  • ํ•˜์ง€๋งŒ “1๊ณผ 2์˜ ์ฐจ์ด = 2์™€ 3์˜ ์ฐจ์ด”๋ผ๊ณ  ๋ณผ ์ˆ˜ ์—†์Œ

โœ” ์ „์ฒ˜๋ฆฌ

  • Ordinal Encoding
  • ์ƒํ™ฉ์— ๋”ฐ๋ผ One-hot ์‚ฌ์šฉ (ํŠนํžˆ ์„ ํ˜•๋ชจ๋ธ)

โœ” ์ฃผ์˜

  • ์„ ํ˜• ๋ชจ๋ธ(LR, SVM) ์‚ฌ์šฉ ์‹œ
    → ๊ฐ„๊ฒฉ์„ “๋“ฑ๊ฐ„”์œผ๋กœ ํ•ด์„ํ•  ์ˆ˜ ์žˆ์Œ → ์™œ๊ณก ์šฐ๋ ค

3๏ธโƒฃ Interval (๋“ฑ๊ฐ„์ฒ™๋„)

โœ” ํŠน์ง•

  • ๊ฐ„๊ฒฉ ์ผ์ •
  • ์ ˆ๋Œ€์  0 ์—†์Œ
  • ๋น„์œจ ๋น„๊ต ๋ถˆ๊ฐ€

โœ” ์˜ˆ์‹œ

  • ์„ญ์”จ์˜จ๋„
  • ์—ฐ๋„
  • ๋‚ ์งœ(Date)

โœ” ๋จธ์‹ ๋Ÿฌ๋‹ ๊ด€์ 

  • ์—ฐ์†ํ˜• ์ˆ˜์น˜์ฒ˜๋Ÿผ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • “๋‘ ๋ฐฐ” ์˜๋ฏธ๋Š” ๋ถ€์ ์ ˆ

โœ” ์ „์ฒ˜๋ฆฌ

  • StandardScaler
  • MinMaxScaler
  • ๋‚ ์งœ/์‹œ๊ฐ„ → sin/cos ๋ณ€ํ™˜(์ฃผ๊ธฐ์„ฑ)

โœ” ์ฃผ์˜

  • ๋ชจ๋ธ์€ Interval๊ณผ Ratio ์ฐจ์ด๋ฅผ ๊ฑฐ์˜ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์Œ
  • ๋‹ค๋งŒ ๋„๋ฉ”์ธ ํ•ด์„ ์‹œ ์ฃผ์˜ ํ•„์š”

4๏ธโƒฃ Ratio (๋น„์œจ์ฒ™๋„)

โœ” ํŠน์ง•

  • ์ ˆ๋Œ€ 0 ์กด์žฌ
  • ๋น„์œจ ๋น„๊ต ๊ฐ€๋Šฅ
  • ๋ชจ๋“  ์ˆ˜ํ•™ ์—ฐ์‚ฐ ๊ฐ€๋Šฅ

โœ” ์˜ˆ์‹œ

  • ๋‚˜์ด, ์š”๊ธˆ(Fare), ๋ฌด๊ฒŒ, ๊ฑฐ๋ฆฌ, ์‹œ๊ฐ„

โœ” ๋จธ์‹ ๋Ÿฌ๋‹ ๊ด€์ 

  • ๊ฐ€์žฅ ์ž์—ฐ์Šค๋Ÿฌ์šด ์ˆ˜์น˜ํ˜• ๋ณ€์ˆ˜
  • ๋น„์œจ ํ•ด์„๋„ ๊ฐ€๋Šฅ

โœ” ์ „์ฒ˜๋ฆฌ

  • StandardScaler / MinMaxScaler
  • ๋กœ๊ทธ ๋ณ€ํ™˜ (log1p)
  • ์ด์ƒ์น˜ ์ œ๊ฑฐ(IQR, Winsorization)

โœ” ์ฃผ์˜

  • ์ด์ƒ์น˜์— ๋งค์šฐ ๋ฏผ๊ฐ → ๋กœ๊ทธ ๋ณ€ํ™˜ ์ž์ฃผ ์‚ฌ์šฉ

๐Ÿ“˜ 4๋Œ€ ์ฒ™๋„ + ์ „์ฒ˜๋ฆฌ ์š”์•ฝํ‘œ

์ฒ™๋„ ์†์„ฑ ์˜ˆ์‹œ ๋ชจ๋ธ์—์„œ ์˜๋ฏธ ๊ถŒ์žฅ ์ „์ฒ˜๋ฆฌ
Nominal ๋ฒ”์ฃผ, ์ˆœ์„œ ์—†์Œ ์„ฑ๋ณ„, ์ƒ‰, Embarked ๊ฐ’ ํฌ๊ธฐ ์˜๋ฏธ ์—†์Œ One-hot, Binary, Target
Ordinal ์ˆœ์„œ ์žˆ์Œ, ๊ฐ„๊ฒฉ ๋ถˆ๊ทœ์น™ ๋งŒ์กฑ๋„, ํ•™๋…„, Pclass ์ˆœ์„œ๋งŒ ์ค‘์š” Ordinal Encoding / One-hot
Interval ๊ฐ„๊ฒฉ ์ผ์ •, 0 ์—†์Œ ์˜จ๋„, ์—ฐ๋„, ๋‚ ์งœ ๋น„์œจ X, ๊ฐ„๊ฒฉ๋งŒ ์˜๋ฏธ Scaling, sin/cos
Ratio 0 ์กด์žฌ, ๋น„์œจ ๊ฐ€๋Šฅ ๋‚˜์ด, ์š”๊ธˆ, ๊ฑฐ๋ฆฌ ๋ชจ๋“  ์—ฐ์‚ฐ ๊ฐ€๋Šฅ Scaling, log, ์ด์ƒ์น˜ ์ฒ˜๋ฆฌ