Menu
CoddyTech

Min-Max 스케일링

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

최솟값-최댓값 스케일링은 모든 특성이 공정하게 반영되도록 합니다. 각 열에서 가장 작은 값은 0이 되고, 가장 큰 값은 1이 되며, 나머지 값은 그 사이에 놓입니다.

연 소득이 $80,000인 40세 고객을 추가한 다음, 네 항목 모두를 스케일링하세요:

네 고객의 나이와 소득을 표로 표시하고 화살표 다음에 스케일링된 동일한 표를 표시합니다. 각 열에서 가장 작은 값은 0.00이 되고 가장 큰 값은 1.00이 되며, 음영은 더 진해지고 나머지 값은 그 사이에 있습니다

브로드캐스팅을 사용하면 각 열의 최솟값과 범위를 이용해 한 줄로 처리할 수 있습니다:

X = np.array([[25, 52000],
              [61, 53000],
              [26, 55000],
              [40, 80000]])
lows = X.min(axis=0)
highs = X.max(axis=0)
scaled = (X - lows) / (highs - lows)

이제 나이도 반영됩니다. 고객 0의 최근접 이웃은 더 이상 61세인 사람이 아닙니다:

0에서 1까지의 정사각형 위에 점으로 표시된 스케일링된 고객들과 고객 0에서 뻗은 선: 26세인 사람이 0.11로 가장 가깝고, 61세인 사람은 1.00 떨어져 있으며, $80,000를 버는 사람은 1.08 떨어져 있음

하나의 극단값이 1이 되고 나머지 값들은 0에 가깝게 압축되므로, min-max는 이상치가 없는 열에 적합합니다.

challenge icon

챌린지

중급

로스터는 비슷하게 추출되는 커피를 매칭합니다. beans의 각 행은 커피 하나를 나타냅니다. 물의 온도(C), 추출 시간(s), 카페인 함량(mg)입니다. 프로그램은 위치 i와 j를 읽습니다. 시작 코드의 distance(a, b)는 두 샘플 사이의 거리를 측정합니다.

  1. beans를 최솟값-최댓값 스케일링하세요.
  2. Every column from 0 to 1:을 출력한 다음, 스케일링된 표를 소수점 이하 2자리까지 출력하세요.
  3. 아래와 같이 스케일링 전후의 두 커피 사이 거리를 출력하세요.

다른 커피 세 개에 대해 위치 0과 1을 지정하면 다음과 같습니다.

Every column from 0 to 1:
[[1.   1.   0.67]
 [0.5  0.5  0.  ]
 [0.   0.   1.  ]]
Coffees 0 and 1: 63.28 apart before scaling, 0.97 after

직접 해보기

import numpy as np


# 두 샘플 사이의 거리를 반환합니다(Why Scale Features에서 가져옴)
def distance(a, b):
    return np.sqrt(((a - b) ** 2).sum())


# 커피 한 잔당 한 행: 물 온도(C), 추출 시간(초), 카페인 함량(mg)
beans = np.array([[88, 120, 60],
                  [96, 300, 30],
                  [86, 90, 70],
                  [94, 240, 120],
                  [90, 180, 90],
                  [84, 60, 50]])
i = int(input())
j = int(input())

# 아래에 코드를 작성하세요
quiz icon실력 점검

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

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

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