Menu
CoddyTech

표준화

Coddy Machine Learning 여정의 머신러닝을 위한 통계 섹션에 포함된 레슨. 64개 중 49번째.

많은 모델은 모든 특성이 평균 0, 표준편차 1이 되도록 조정할 때 가장 잘 학습합니다. 표준화가 바로 이런 작업을 합니다. 각 값은 해당 열에서의 z 점수가 됩니다.

호박 다섯 개의 무게(kg)와 너비(cm):

표준편차 단위로 하나의 눈금자 위에 표시된 점 두 줄: 8~40kg의 호박 무게 다섯 개와 30~65cm의 너비 다섯 개. 각 줄은 자체 평균이 0에 오도록 중심이 맞춰져 있으며, 모두 -1.6과 1.6 사이에 있음

브로드캐스팅은 모든 열을 한 번에 표준화합니다:

pumpkins = np.array([[30, 60],
                     [8, 30],
                     [22, 55],
                     [40, 65],
                     [15, 40]])
z = (pumpkins - pumpkins.mean(axis=0)) / pumpkins.std(axis=0)
print(np.round(z.mean(axis=0), 2))
print(np.round(z.std(axis=0), 2))

다음과 같이 출력됩니다:

[0. 0.]
[1. 1.]

확인하기 전에 반올림하세요. 반올림하지 않으면 평균이 0이어도 2.22044605e-17처럼 출력될 수 있는데, 이는 아주 작은 반올림 오차입니다.

min-max와 달리 고정된 범위가 없습니다. 대부분의 값은 -2와 2 사이에 위치합니다.

challenge icon

챌린지

중급

낙농장에서 특이한 소를 찾아냅니다. cows의 각 행은 소 한 마리에 해당하며, 우유(하루 기준 리터), 체중(kg), 나이(년)가 features에 이름과 함께 들어 있습니다. 프로그램은 소의 위치 k를 읽습니다.

  1. standardize(X)를 완성하세요. 그러면 검사 줄에서 [0. 0. 0.]와 [1. 1. 1.]을 출력합니다.
  2. 부호는 무시하고 소 k의 z 점수 중 0에서 가장 먼 값을 찾아 아래와 같이 소수점 둘째 자리까지 출력하세요.

다른 농장의 소에 대해:

Column means: [0. 0. 0.]
Column stds: [1. 1. 1.]
Cow 2 stands out by weight: 1.76 std above the herd

직접 해보기

import numpy as np

features = ["milk", "weight", "age"]
# 소 한 마리당 한 행: 우유 생산량은 하루 리터 단위, 체중은 kg 단위, 나이는 연 단위
cows = np.array([[28, 610, 6],
                 [22, 540, 3],
                 [35, 680, 6],
                 [31, 590, 9],
                 [19, 650, 4],
                 [26, 520, 2],
                 [30, 600, 7]])
k = int(input())


# 모든 열을 평균 0, 표준편차 1로 표준화한 X를 반환
def standardize(X):
    # 아래 줄을 표준화 코드로 바꾸세요
    return X


# 아래 세 줄은 함수를 검사하므로 변경하지 마세요
z = standardize(cows)
print("Column means:", np.round(z.mean(axis=0), 2))
print("Column stds:", np.round(z.std(axis=0), 2))

# 아래에 코드를 작성하세요: 소 k의 두드러진 특징은 무엇인가요?
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

머신러닝을 위한 통계의 모든 레슨

직접 연습해 보세요: 온라인 Python 컴파일러