투표 기반 회귀 모델을 이용한 당뇨병 예측

Beginner

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

소개

이 실습에서는 환자의 당뇨병 진행 상황을 예측하기 위해 투표 회귀 분석 (Voting Regressor) 을 사용합니다. 데이터 예측을 위해 그래디언트 부스팅 회귀 분석 (Gradient Boosting Regressor), 랜덤 포레스트 회귀 분석 (Random Forest Regressor), 선형 회귀 분석 (Linear Regression) 세 가지 회귀 분석 모델을 사용합니다. 그 후, 위 세 가지 회귀 분석 모델을 투표 회귀 분석에 사용합니다. 마지막으로, 모든 모델의 예측 결과를 비교하기 위해 플롯을 그립니다.

당뇨병 환자 코호트에서 수집된 10 개의 특징으로 구성된 당뇨병 데이터 세트를 사용합니다. 목표는 기준 시점으로부터 1 년 후 질병 진행 정도의 정량적 측정값입니다.

VM 팁

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

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

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

라이브러리 가져오기

투표 회귀 분석 (Voting Regressor) 을 사용하여 당뇨병 예측을 수행하기 위해 필요한 라이브러리를 가져옵니다.

import matplotlib.pyplot as plt
from sklearn.datasets import load_diabetes
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.linear_model import LinearRegression
from sklearn.ensemble import VotingRegressor

당뇨병 데이터셋 로드

다음으로, scikit-learn 에서 제공하는 load_diabetes() 함수를 사용하여 당뇨병 데이터셋을 프로그램으로 로드합니다. 이 함수는 두 개의 배열 튜플로 데이터셋을 반환합니다. 하나는 특징 데이터를, 다른 하나는 목표 데이터를 포함합니다. 이 배열들을 각각 Xy에 할당합니다.

## 당뇨병 데이터셋 로드
X, y = load_diabetes(return_X_y=True)

회귀 모델 학습

이제 Gradient Boosting 회귀 모델, Random Forest 회귀 모델, 그리고 선형 회귀 모델을 초기화합니다. 다음으로, 이 세 가지 회귀 모델을 사용하여 투표 회귀 모델 (Voting Regressor) 을 생성합니다.

## 분류기 학습
reg1 = GradientBoostingRegressor(random_state=1)
reg2 = RandomForestRegressor(random_state=1)
reg3 = LinearRegression()

reg1.fit(X, y)
reg2.fit(X, y)
reg3.fit(X, y)

ereg = VotingRegressor([("gb", reg1), ("rf", reg2), ("lr", reg3)])
ereg.fit(X, y)

예측 수행

이제 각 회귀 모델을 사용하여 처음 20 개 데이터에 대한 예측을 수행합니다.

## 예측 수행
xt = X[:20]

pred1 = reg1.predict(xt)
pred2 = reg2.predict(xt)
pred3 = reg3.predict(xt)
pred4 = ereg.predict(xt)

결과 시각화

마지막으로, 20 개 예측값을 시각화합니다. 빨간색 별표는 투표 회귀 모델 (Voting Regressor) 이 생성한 평균 예측값을 나타냅니다.

## 결과 시각화
plt.figure()
plt.plot(pred1, "gd", label="GradientBoostingRegressor")
plt.plot(pred2, "b^", label="RandomForestRegressor")
plt.plot(pred3, "ys", label="LinearRegression")
plt.plot(pred4, "r*", ms=10, label="VotingRegressor")

plt.tick_params(axis="x", which="both", bottom=False, top=False, labelbottom=False)
plt.ylabel("예측값")
plt.xlabel("학습 샘플")
plt.legend(loc="best")
plt.title("회귀 모델 예측값 및 평균")

plt.show()

요약

이 실습에서는 투표 회귀 모델 (Voting Regressor) 을 사용하여 환자의 당뇨병 진행 상황을 예측했습니다. 데이터 예측을 위해 그래디언트 부스팅 회귀 모델 (Gradient Boosting Regressor), 랜덤 포레스트 회귀 모델 (Random Forest Regressor), 선형 회귀 모델 (Linear Regression) 세 가지 다른 회귀 모델을 사용했습니다. 또한, 모든 모델의 예측 결과를 비교하기 위해 시각화했습니다.