Python으로 배우는 AI 개념

Python으로 배우는 머신러닝 데이터 준비

머신러닝 모델은 숫자로 학습하며, 특성들의 스케일이 비슷할수록 더 잘 배웁니다. 정규화와 표준화는 데이터의 스케일을 조정하고, 행렬 곱셈은 모델이 여러 특성을 한 번에 결합하는 방법입니다.

쉬운 말로 이해하는 개념

머신러닝 모델은 숫자로 학습하며, 특성들의 스케일이 비슷할수록 더 잘 배웁니다. 정규화와 표준화는 데이터의 스케일을 조정하고, 행렬 곱셈은 모델이 여러 특성을 한 번에 결합하는 방법입니다.

Min-max 정규화와 z-점수 표준화로 특성의 스케일을 맞추고, 행렬 곱셈을 직접 계산합니다.

핵심 아이디어

  • 스케일이 매우 다른 특성이 있으면 큰 숫자가 모델을 지배합니다.
  • Min-max는 값을 0과 1 사이로 유지하고, z-점수는 분포 모양을 유지한 채 중심을 0으로 옮깁니다.
  • 스케일링 값은 학습 데이터에서 계산하고 새 데이터에도 그대로 사용합니다.
  • 행렬 곱 A × B를 하려면 A의 열 수와 B의 행 수가 같아야 합니다.

언제 사용하나요?

  • 신경망과 AI 라이브러리 내부에서 무슨 일이 일어나는지 이해합니다.
  • 해당 챌린지에서 직접 구현하기 전에 아이디어를 익힙니다.
  • 머신러닝 강의, 면접, 프로젝트를 준비합니다.

직접 움직여 보기

x5를 움직여 이상값을 만들고 min-max와 z-점수가 어떻게 반응하는지 비교해 보세요. A·B의 칸을 가리키면 어떤 행과 열을 쓰는지 보입니다.

예제 코드

코드 실행 →
main.py
import statistics

heights = [150, 160, 170, 180, 190]

# Min-max scaling squeezes values into the range 0..1.
low, high = min(heights), max(heights)
print("min-max:", [round((h - low) / (high - low), 2) for h in heights])

# Z-score standardization centres values on 0 with a spread of 1.
mean = statistics.mean(heights)
std = statistics.pstdev(heights)
print("z-scores:", [round((h - mean) / std, 2) for h in heights])

# Matrix multiplication: each output is a row of A dotted with a column of B.
A = [[1, 2], [3, 4]]
B = [[5, 6], [7, 8]]
product = [[sum(A[i][k] * B[k][j] for k in range(2)) for j in range(2)] for i in range(2)]
print("A x B:", product)

예상 출력

min-max: [0.0, 0.25, 0.5, 0.75, 1.0]
z-scores: [-1.41, -0.71, 0.0, 0.71, 1.41]
A x B: [[19, 22], [43, 50]]

작동 원리

Min-max 스케일링은 가장 작은 키를 0으로, 가장 큰 키를 1로 바꿉니다. z-점수는 평균을 빼고 표준편차로 나누므로 값들이 0을 중심으로 놓입니다. 행렬 곱에서 각 칸은 A의 한 행과 B의 한 열을 원소별로 곱해 더한 값입니다.

값을 변경하고 Python 설치 없이 CodeUtility 온라인 Python 컴파일러에서 실행하세요.

연습 문제

입력값과 경계 조건을 바꾸고 더 큰 데이터에서도 동작을 확인하세요.

  1. 입력이나 가중치를 바꾸고 실행하기 전에 출력을 예상해 보세요.
  2. 중간 값을 출력해 계산의 각 단계를 따라가 보세요.
  3. 아래에 연결된 챌린지를 풀며 아이디어를 직접 구현해 보세요.
Python IDE에서 실행 →

챌린지로 연습하기

이 레슨에서 배운 내용으로 실제 문제를 풀어 보세요. 모든 챌린지는 브라우저에서 실행되며 즉시 테스트와 AI 리뷰를 받을 수 있습니다.

모든 챌린지