소개
이 실습에서는 scikit-learn 의 cross_val_predict 및 PredictionErrorDisplay 함수를 사용하여 교차 검증을 통해 모델 예측값과 오차를 시각화하는 방법을 배웁니다. 당뇨병 데이터셋을 로드하고 선형 회귀 모델 인스턴스를 생성한 후 교차 검증을 사용하여 예측값 배열을 얻습니다. 그런 다음 PredictionErrorDisplay를 사용하여 실제 값 대 예측 값, 그리고 잔차 대 예측 값을 플롯합니다.
VM 팁
VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습을 위한 Jupyter Notebook에 접근합니다.
때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업 검증은 자동화될 수 없습니다.
학습 중 문제가 발생하면 Labby 에게 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.
데이터 로드 및 준비
먼저, 당뇨병 데이터셋을 로드하고 모델링을 위해 준비합니다. scikit-learn 의 load_diabetes 함수를 사용하여 데이터셋을 두 개의 배열 X와 y에 로드합니다.
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_predict 및 PredictionErrorDisplay 함수를 사용하여 교차 검증을 통해 모델 예측 및 오류를 시각화하는 방법을 배웠습니다. 당뇨병 데이터셋을 로드하고 선형 회귀 모델 인스턴스를 생성한 후 교차 검증을 사용하여 예측값 배열을 얻었습니다. 그런 다음 PredictionErrorDisplay를 사용하여 실제 값 대 예측 값, 그리고 잔차 대 예측 값 플롯을 생성했습니다. 마지막으로 결과를 해석하고 모델 평가를 위해 폴드별 성능 지표를 사용하는 중요성에 대해 논의했습니다.