Menu
CoddyTech

특성 스케일링이 필요한 이유

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

어떤 고객이 신규 고객과 가장 비슷할까요? 많은 모델은 샘플 간의 거리를 측정합니다. 각 특성의 차이를 제곱하고, 모두 더한 다음, 제곱근을 구합니다.

연봉이 $52,000인 25세와 연봉이 $53,000인 61세:

두 고객 간 거리에 각 특성이 더하는 값을 보여 주는 막대 두 개: 나이는 36년 차이로 1,296을 더하며, 너무 얇아 보이지 않는 작은 막대입니다. 소득은 $1,000 차이로 1,000,000을 더하며, 긴 막대입니다.

전체 테이블에서 axis=1은 각 행의 제곱을 합산하고 .argmin()은 가장 가까운 행을 찾습니다:

a = np.array([25, 52000])  # 나이, 소득
X = np.array([[61, 53000],   # 61세인 사람
              [26, 55000]])  # $55,000를 버는 26세인 사람
dists = np.sqrt(((X - a) ** 2).sum(axis=1))
print(np.round(dists, 2))
print(dists.argmin())

다음과 같이 출력됩니다:

[1000.65 3000.  ]
0

61세인 사람이 가장 가깝습니다. 달러는 더 큰 숫자로 계산되므로, $1,000은 36년보다 더 큰 비중을 차지합니다. 크기를 조정하지 않으면 가장 큰 단위가 결정합니다.

이 장에서는 모든 기능이 공평하게 다뤄집니다.

challenge icon

챌린지

중급

상점에서는 features에 이름이 지정된 가격($), 에너지(연간 kWh), 물(세탁 1회당 리터)을 기준으로 세탁기를 비교합니다. 프로그램은 세탁기 위치 두 개를 i와 j로 읽습니다. 다음을 출력하세요:

  1. Squared gaps: 각 특성의 차이를 제곱한 값.
  2. Distance: 소수점 이하 2자리로 반올림한 값.
  3. Dominant feature: 제곱한 차이가 가장 큰 특성의 이름.

다른 세탁기 두 대의 경우:

Squared gaps: [2500 6400    1]
Distance: 94.35
Dominant feature: energy

직접 해보기

import numpy as np

features = ["price", "energy", "water"]
# 세탁기 한 대당 한 행: 가격은 달러, 에너지 사용량은 연간 kWh, 물 사용량은 세탁 1회당 리터 단위
machines = np.array([[499, 160, 48],
                     [349, 210, 55],
                     [899, 120, 42],
                     [529, 250, 50],
                     [279, 230, 60],
                     [749, 140, 45]])
i = int(input())
j = int(input())

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

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

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

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