StandardScaler
Coddy Machine Learning 여정의 머신러닝을 위한 통계 섹션에 포함된 레슨. 64개 중 50번째.
모델은 새로운 모든 샘플을 학습 데이터에 적용한 것과 정확히 동일한 방식으로 스케일링해야 합니다. scikit-learn의 StandardScaler는 표준화하고 그 방법을 기억합니다:
코드에서 각 작업은 청소한 창문 수와 소요 시간(분)으로 나타냅니다:
from sklearn.preprocessing import StandardScaler
X_train = np.array([[2, 8], [10, 25], [6, 20], [14, 35]])
scaler = StandardScaler()
scaler.fit(X_train)
X_new = np.array([[8, 30]]) # 샘플 하나: 행이 하나인 표
print(np.round(scaler.transform(X_new), 2))다음이 출력됩니다:
[[0. 0.82]]fit은 각 열의 평균과 표준편차를 학습하고(np.std처럼 n으로 나눔), 이를 scaler.mean_과 scaler.scale_에 저장합니다. transform은 이를 적용합니다.
새 데이터에는 절대 fit하지 마세요. 작업의 평균이 자기 자신이 되어 [[0. 0.]]이 됩니다. 학습 데이터에서는 fit_transform이 한 번의 호출로 두 작업을 모두 수행합니다.
챌린지
중급분류기는 X_train에 있는 아보카도의 무게, 단단한 정도, 수확 후 경과 일수를 학습했습니다. 프로그램은 새로운 아보카도를 한 행짜리 표 new_avocado에 읽어 들이지만, 시작 코드의 스케일링은 모든 아보카도에 대해 [[0. 0. 0.]]을 출력합니다.
- 문제를 해결하세요. 학습 데이터의 평균과 표준편차를 사용해 새로운 아보카도의 스케일을 조정하세요.
- 측정값 중 학습 데이터의 평균에서 어느 쪽으로든 표준편차 2보다 더 벗어난 값의 개수를 세고, 아래와 같이 출력하세요.
다른 배치의 경우:
New avocado: [[2.98 0. 0.09]]
1 of 3 measurements are more than 2 std from the training avocados직접 해보기
import numpy as np
from sklearn.preprocessing import StandardScaler
# 훈련용 아보카도, 한 행에 하나씩: 무게(그램), 단단함(1부터 10까지), 수확 후 경과 일수
X_train = np.array([[210, 8, 2],
[185, 5, 6],
[240, 7, 3],
[170, 3, 9],
[225, 6, 5],
[195, 4, 7]])
# 벨트 위의 새 아보카도
weight = float(input())
firmness = float(input())
days = float(input())
new_avocado = np.array([[weight, firmness, days]])
# 모든 아보카도에 대해 [[0. 0. 0.]]이 출력됩니다: 이를 수정하세요
scaler = StandardScaler()
scaled = scaler.fit_transform(new_avocado)
print("New avocado:", np.round(scaled, 2))
# 아래에 코드를 작성하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
머신러닝을 위한 통계의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러