Menu
CoddyTech

당뇨병 진행 예측

Coddy Machine Learning 여정의 지도 학습 섹션에 포함된 레슨. 58개 중 55번째.

당뇨병 클리닉에서는 각 환자의 질병이 1년 동안 얼마나 진행될지를 기준으로 후속 진료를 예약합니다. 섹션 2에서는 한 가지 특성이 전체 내용의 일부만 보여 주었습니다:

클리닉 환자들의 질병 진행 정도와 스케일링된 bmi의 관계. 점들이 넓게 퍼져 있고 그 사이로 주황색 선 하나가 상승하며, bmi만 사용: R 제곱 0.34라고 표시되어 있음

이제 load_diabetes의 10개 측정값이 모두 입력됩니다. 클리닉은 어떤 모델을 신뢰해야 하며, 오차는 몇 점일까요?

교차 검증을 통해 공정하게 선택하고, 보지 못한 환자들에 대한 오차를 정직하게 평가하며, 모델이 놓친 부분이 있는지 잔차를 확인하려고 합니다.

challenge icon

챌린지

어려움

프로그램은 Ridge 알파 값을 alphas에 읽어 들입니다. 시작 코드에서는 제목이 있는 차트를 설정합니다.

  1. random_state=0을 사용해 테스트용 1/4을 분리합니다.
  2. 학습 행에 대해 5겹 CV를 사용하여 각 알파마다 LinearRegression과 Ridge의 점수를 계산합니다. 각 평균 R 제곱(소수점 3자리)을 출력한 다음, 우승 모델을 출력합니다.
  3. 우승 모델을 학습시키고 테스트 MAE와 RMSE(소수점 1자리), R 제곱(소수점 3자리)을 출력합니다.
  4. 테스트 잔차(실제값에서 예측값을 뺀 값)를 예측값에 대해 산점도로 표시합니다. 0 기준선을 추가한 다음 그래프를 표시합니다.

다른 진료소에서 알파 값으로 0.5와 2.0을 사용하는 경우:

Linear: CV R squared 0.472
Ridge 0.5: CV R squared 0.481
Ridge 2.0: CV R squared 0.402
Winner: Ridge 0.5
Test errors: MAE 47.3, RMSE 58.9, R squared 0.414

그러면 Coddy가 잔차 차트를 설명합니다.

직접 해보기

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.linear_model import LinearRegression, Ridge
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score

diabetes = load_diabetes(as_frame=True)
X = diabetes.data
y = diabetes.target

# 시험해 볼 Ridge 알파값
n = int(input())
alphas = []
for i in range(n):
    alphas.append(float(input()))

fig, ax = plt.subplots()
ax.set_title("Residuals on Test Patients")
ax.set_xlabel("Predicted progression")
ax.set_ylabel("Residual (true - predicted)")

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

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

지도 학습의 모든 레슨

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