오차 측정하기
Coddy Machine Learning 여정의 지도 학습 섹션에 포함된 레슨. 58개 중 13번째.
모델의 예측은 실제 가격에서 달러로 얼마나 벗어날까요? 여기 모델이 한 번도 본 적 없는 테스트 주택 5채의 가격을 예측한 결과가 있습니다:
sklearn.metrics가 오차를 측정해 줍니다:
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
y_test = np.array([290, 410, 235, 520, 330]) # 천 달러
pred = np.array([270, 450, 245, 430, 360])
print(mean_absolute_error(y_test, pred))
print(np.round(np.sqrt(mean_squared_error(y_test, pred)), 1))
print(np.round(r2_score(y_test, pred), 3))다음이 출력됩니다:
38.0
47.1
0.776MAE, 평균 절대 오차는 일반적인 오차입니다. 3만 8천입니다. RMSE는 오차를 제곱하고 평균을 낸 다음 제곱근을 구합니다. 큰 오차 하나가 값을 47까지 끌어올립니다.
둘 다 타깃의 단위를 사용합니다. r2_score는 R 제곱 값으로, 가격 분산의 78%를 설명합니다.
챌린지
중급한 상점에서 중고 카메라의 가격을 모델로 예측합니다. 두 번째 특성이 도움이 될까요? 프로그램은 촬영한 사진 수(천 장 단위)를 나타내는 shutter_k 또는 megapixels를 읽습니다. 시작 코드는 age_years만 사용한 모델과 추가 특성도 사용한 모델, 이렇게 두 모델을 학습시키고 각 모델의 테스트 예측값을 preds에 저장합니다.
- 각 모델의 MAE, RMSE(소수점 1자리), R 제곱(소수점 3자리)을 출력하세요.
- MAE가 더 작은 모델을 출력하세요.
다른 상점과 shutter_k의 경우:
age_years: MAE 212.4, RMSE 268.1, R squared 0.853
age_years + shutter_k: MAE 98.7, RMSE 121.0, R squared 0.97
Better: age_years + shutter_k, off by 98.7 dollars on a typical camera직접 해보기
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
# 판매된 카메라 한 대당 한 행: 사용 연수, 셔터 작동 횟수(천 회 단위), 화소 수(메가픽셀), 가격(달러)
cameras = pd.read_csv("cameras.csv")
extra = input()
names = ["age_years", "age_years + " + extra]
columns = [["age_years"], ["age_years", extra]]
# 행 전체를 나눕니다. 아래의 각 모델은 사용할 열을 직접 선택합니다
X_train, X_test, y_train, y_test = train_test_split(cameras, cameras["price"], test_size=0.25, random_state=0)
# 열 목록마다 모델 하나씩, 그리고 테스트 카메라에 대한 해당 모델의 예측값
preds = []
for cols in columns:
model = LinearRegression()
model.fit(X_train[cols], y_train)
preds.append(model.predict(X_test[cols]))
# 아래에 코드를 작성하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
지도 학습의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러