Menu
CoddyTech

브로드캐스팅

Coddy Machine Learning 여정의 데이터와 시각화 섹션에 포함된 레슨. 60개 중 13번째.

모든 특성이 0을 중심으로 분포하면 모델이 더 잘 학습합니다. 따라서 각 열에서 해당 열의 평균을 빼면 NumPy가 평균을 모든 행에 복사합니다:

키와 몸무게를 나타내는 3행 2열 표에서 모든 세 행에 복사된 평균 행 170과 70을 빼면 중심화된 표인 0과 -10, 10과 10, -10과 0이 됩니다

코드에서 세 사람의 키와 몸무게를 나타내면 다음과 같습니다.

data = np.array([[170, 60],
                 [180, 80],
                 [160, 70]])
print(data - data.mean(axis=0))

다음이 출력됩니다:

[[  0. -10.]
 [ 10.  10.]
 [-10.   0.]]

그 복사 작업이 브로드캐스팅입니다. 이제 표가 중심화되었습니다. 각 값은 해당 열의 평균에서 얼마나 떨어져 있는지를 나타냅니다.

평균은 (2,) 형태입니다. (3, 2) 테이블의 각 열마다 값이 하나씩 있습니다. 길이가 다르면 오류가 발생하며 중단됩니다.

challenge icon

챌린지

쉬움

피트니스 앱은 훈련 전에 모든 테이블을 중심화합니다. 시작 코드는 두 테이블인 users(특성 3개)와 workouts(특성 2개)에 center를 호출하고 결과를 출력합니다. 현재 center는 테이블을 변경하지 않고 반환합니다.

center를 완성하여 열의 개수와 관계없이 각 열의 평균을 해당 열에서 빼도록 하세요. 그 아래의 줄은 그대로 두세요.

사용자 2명과 운동 기록 2개가 있는 경우 출력은 다음과 같습니다.

Centered users:
[[-6.  7. -5.]
 [ 6. -7.  5.]]
Column means after centering: [0. 0. 0.]
Centered workouts:
[[-10. -90.]
 [ 10.  90.]]
Column means after centering: [0. 0.]

직접 해보기

import numpy as np


def center(table):
    # 각 열의 평균을 뺀 table을 반환하세요
    # 아래에 코드를 작성하세요
    return table


# 사용자당 한 행: 나이, 안정 시 심박수, 하루 운동 시간(분)
users = np.array([[25, 62, 30],
                  [31, 70, 45],
                  [40, 58, 20],
                  [29, 66, 25]])
# 운동당 한 행: 운동 시간(분), 소모한 칼로리
workouts = np.array([[30, 240],
                     [45, 410],
                     [20, 150],
                     [60, 520],
                     [35, 300]])

# 아래 줄은 변경하지 마세요
print("Centered users:")
print(center(users))
print("Column means after centering:", np.round(center(users).mean(axis=0), 2))
print("Centered workouts:")
print(center(workouts))
print("Column means after centering:", np.round(center(workouts).mean(axis=0), 2))
quiz icon실력 점검

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

데이터와 시각화의 모든 레슨

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