교차 검증을 통한 예측 시각화

Beginner

This tutorial is from open-source community. Access the source code

소개

이 실습에서는 scikit-learn 의 cross_val_predictPredictionErrorDisplay 함수를 사용하여 교차 검증을 통해 모델 예측값과 오차를 시각화하는 방법을 배웁니다. 당뇨병 데이터셋을 로드하고 선형 회귀 모델 인스턴스를 생성한 후 교차 검증을 사용하여 예측값 배열을 얻습니다. 그런 다음 PredictionErrorDisplay를 사용하여 실제 값 대 예측 값, 그리고 잔차 대 예측 값을 플롯합니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습을 위한 Jupyter Notebook에 접근합니다.

때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업 검증은 자동화될 수 없습니다.

학습 중 문제가 발생하면 Labby 에게 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.

데이터 로드 및 준비

먼저, 당뇨병 데이터셋을 로드하고 모델링을 위해 준비합니다. scikit-learn 의 load_diabetes 함수를 사용하여 데이터셋을 두 개의 배열 Xy에 로드합니다.

from sklearn.datasets import load_diabetes

X, y = load_diabetes(return_X_y=True)

선형 회귀 모델 생성

다음으로, scikit-learn 의 LinearRegression 클래스를 사용하여 선형 회귀 모델 인스턴스를 생성합니다.

from sklearn.linear_model import LinearRegression

lr = LinearRegression()

교차 검증 예측 생성

scikit-learn 의 cross_val_predict 함수를 사용하여 교차 검증된 예측값을 생성합니다.

from sklearn.model_selection import cross_val_predict

y_pred = cross_val_predict(lr, X, y, cv=10)

예측 오류 시각화

scikit-learn 의 PredictionErrorDisplay를 사용하여 예측 오류를 시각화합니다. 실제 값 대 예측 값, 그리고 잔차 대 예측 값을 플롯합니다.

import matplotlib.pyplot as plt
from sklearn.metrics import PredictionErrorDisplay

fig, axs = plt.subplots(ncols=2, figsize=(8, 4))
PredictionErrorDisplay.from_predictions(
    y,
    y_pred=y_pred,
    kind="actual_vs_predicted",
    subsample=100,
    ax=axs[0],
    random_state=0,
)
axs[0].set_title("실제 값 대 예측 값")
PredictionErrorDisplay.from_predictions(
    y,
    y_pred=y_pred,
    kind="residual_vs_predicted",
    subsample=100,
    ax=axs[1],
    random_state=0,
)
axs[1].set_title("잔차 대 예측 값")
fig.suptitle("교차 검증된 예측값 플롯")
plt.tight_layout()
plt.show()

결과 해석

시각화 결과를 통해 실제 값 대 예측 값 플롯은 다소 변동이 있지만 비교적 선형적인 관계를 보여줍니다. 잔차 대 예측 값 플롯은 명확한 추세가 없이 비교적 무작위적인 패턴을 보여주며, 이는 선형 회귀 모델이 데이터에 적합할 수 있음을 나타냅니다. 그러나 시각화 목적으로만 cross_val_predict를 사용했음을 유의해야 합니다. cross_val_predict가 반환하는 연결된 예측값으로부터 단일 성능 지표를 계산하여 모델 성능을 정량적으로 평가하는 것은 문제가 될 수 있습니다. 왜냐하면 서로 다른 교차 검증 (CV) 폴드의 크기와 분포가 다르기 때문입니다. 대신 cross_val_score 또는 cross_validate를 사용하여 폴드별 성능 지표를 계산하는 것이 좋습니다.

요약

이 실습에서는 scikit-learn 의 cross_val_predictPredictionErrorDisplay 함수를 사용하여 교차 검증을 통해 모델 예측 및 오류를 시각화하는 방법을 배웠습니다. 당뇨병 데이터셋을 로드하고 선형 회귀 모델 인스턴스를 생성한 후 교차 검증을 사용하여 예측값 배열을 얻었습니다. 그런 다음 PredictionErrorDisplay를 사용하여 실제 값 대 예측 값, 그리고 잔차 대 예측 값 플롯을 생성했습니다. 마지막으로 결과를 해석하고 모델 평가를 위해 폴드별 성능 지표를 사용하는 중요성에 대해 논의했습니다.