특성 스케일링이 필요한 이유
Coddy Machine Learning 여정의 머신러닝을 위한 통계 섹션에 포함된 레슨. 64개 중 47번째.
어떤 고객이 신규 고객과 가장 비슷할까요? 많은 모델은 샘플 간의 거리를 측정합니다. 각 특성의 차이를 제곱하고, 모두 더한 다음, 제곱근을 구합니다.
연봉이 $52,000인 25세와 연봉이 $53,000인 61세:
전체 테이블에서 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. ]
061세인 사람이 가장 가깝습니다. 달러는 더 큰 숫자로 계산되므로, $1,000은 36년보다 더 큰 비중을 차지합니다. 크기를 조정하지 않으면 가장 큰 단위가 결정합니다.
이 장에서는 모든 기능이 공평하게 다뤄집니다.
챌린지
중급상점에서는 features에 이름이 지정된 가격($), 에너지(연간 kWh), 물(세탁 1회당 리터)을 기준으로 세탁기를 비교합니다. 프로그램은 세탁기 위치 두 개를 i와 j로 읽습니다. 다음을 출력하세요:
Squared gaps:각 특성의 차이를 제곱한 값.Distance:소수점 이하 2자리로 반올림한 값.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())
# 아래에 코드를 작성하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
머신러닝을 위한 통계의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러