Menu
CoddyTech

직선으로 예측하기

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

적합선은 작은 예측 기계입니다. 새로운 x를 넣으면 y를 돌려줍니다. 강아지의 몸무게를 8주 차부터 20주 차까지 측정했습니다.

weeks = np.array([8, 10, 12, 14, 16, 18, 20])
kg = np.array([3.1, 4.0, 5.2, 6.1, 7.0, 8.2, 9.1])
slope, intercept = np.polyfit(weeks, kg, 1)
new_weeks = np.array([15, 52])
print(np.round(slope * new_weeks + intercept, 1))

이렇게 하면 [ 6.6 25.2]가 출력됩니다. 15주는 데이터 범위 안에 있습니다. 52주는 범위 밖이며, 개가 성장을 멈춘 뒤에도 선은 계속 상승합니다:

맞춤 선 위에 8주부터 20주까지의 체중 측정값 7개가 표시되어 있습니다. 선은 데이터 범위 밖이라고 표시된 음영 영역 안으로 점선 형태로 계속 이어져 52주에 25.2kg에 이르지만, 실제 개의 점선 곡선은 약 13kg 부근에서 평평해집니다

데이터 범위 밖을 예측하는 것은 외삽이며 위험합니다. 모델은 학습한 것과 비슷한 입력에서만 신뢰할 수 있습니다. 먼저 확인하세요:

week = 52
print(week >= weeks.min() and week <= weeks.max())

이것은 False를 출력합니다.

challenge icon

챌린지

중급

양초가 타는 동안 0시간부터 6시간까지 매시간 측정했습니다: cm 단위의 hours와 height입니다. 프로그램은 new_hours를 읽습니다.

  1. hours로부터 height를 예측하는 직선을 적합시키세요.
  2. new_hours에 대한 예측값을 소수점 아래 2자리까지 반올림하여 출력하세요.
  3. new_hours가 데이터의 시간 범위 안에 있는지 출력하세요. 양 끝값을 모두 포함합니다.

입력이 4.5일 때:

Predicted height: 13.07 cm
Inside the data: yes

직접 해보기

import numpy as np

hours = np.array([0, 1, 2, 3, 4, 5, 6])
height = np.array([20.0, 18.4, 17.1, 15.3, 13.9, 12.2, 10.8])
new_hours = float(input())

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

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

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

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