반응형
깃허브 링크: https://github.com/PSLeon24/LearnAI/blob/main/Predict_Diabetes.ipynb
당뇨병 환자의 1년 후 병의 진전된 정도를 예측하는 모델 만들기 - 1
문제 해결을 위해 당뇨병 환자의 데이터 준비하기
1. load_diabetes() 함수로 당뇨병 데이터 준비하기
from sklearn.datasets import load_diabetes diabetes = load_diabetes()
type(diabetes) # diabetes 변수에 저장된 값의 자료형은 파이썬 딕셔너리(dictionary)와 유사한 Bunch 클래스이다.
sklearn.utils._bunch.Bunch
2. 입력과 타깃 데이터의 크기 확인하기
# diabetes의 속성 중 data 속성과 target 속성에는 입력과 타깃 데이터가 넘파이 배열로 저장되어 있는데 shape 속성으로 확인할 수 있다.
print(f'Data Shape: {diabetes.data.shape}')
print(f'Target Shape: {diabetes.target.shape}')
Data Shape: (442, 10)
Target Shape: (442,)
data는 442x10 크기의 2차원 배열이고 tartget은 442개의 요소를 가진 1차원 배열임을 확인할 수 있다.
이때, diabetes.data에서 행은 샘플(sample)이고, 열은 샘플의 특성(feature)이다.
샘플: 당뇨병 환자에 대한 특성으로 이루어진 데이터 1세트
특성: 당뇨병 데이터의 여러 특징들(ex: 환자의 혈압, 혈당, 몸무게, 키) = 독립 변수(independent variable)
즉, 특성(특징)들의 수치를 모아 1세트로 만들면 1개의 샘플이 된다.
diabetes.data[:5] # diabetes.data에 저장된 입력 데이터 중 앞부분의 샘플 5개만 출력
array([[ 0.03807591, 0.05068012, 0.06169621, 0.02187239, -0.0442235 ,
-0.03482076, -0.04340085, -0.00259226, 0.01990749, -0.01764613],
[-0.00188202, -0.04464164, -0.05147406, -0.02632753, -0.00844872,
-0.01916334, 0.07441156, -0.03949338, -0.06833155, -0.09220405],
[ 0.08529891, 0.05068012, 0.04445121, -0.00567042, -0.04559945,
-0.03419447, -0.03235593, -0.00259226, 0.00286131, -0.02593034],
[-0.08906294, -0.04464164, -0.01159501, -0.03665608, 0.01219057,
0.02499059, -0.03603757, 0.03430886, 0.02268774, -0.00936191],
[ 0.00538306, -0.04464164, -0.03638469, 0.02187239, 0.00393485,
0.01559614, 0.00814208, -0.00259226, -0.03198764, -0.04664087]])
diabetes.target[:5]
# diabetes.target에 저장된 데이터 중 앞부분의 샘플 5개만 출력
# 타깃 데이터는 10개의 요소로 구성된 샘플 1개에 대응됨
# 타깃 데이터는 10개의 요소로 구성된 샘플 1개에 대응됨
array([151., 75., 141., 206., 135.])
이 예제를 풀기 위해 data의 입력 데이터와와 target 데이터의 수치를 해석하는 것은 전문가인 의사의 영역이므로 이 둘 사이의 규칙(모델)만 찾으면 된다.
다만, 실전에서는 데이터의 의미를 아는 것이 매우 중요할 수 있으므로 전문가의 도움을 받는것이 좋다.
당뇨병 환자 데이터 시각화하기
1. 맷플롯립의 scatter() 함수로 산점도 그리기
import matplotlib.pyplot as plt plt.scatter(diabetes.data[:, 2], diabetes.target)
# diabetes.data의 열(특성) 중 3번째(2)와 타깃 데이터로 산점도 그리기
# 그래프의 x축은 diabetes의 세 번째 특성, y축은 diabetes.target
plt.show()
위 그래프를 보면, 세 번째 특성(입력 데이터)과 타깃 데이터 사이에 정비례 관계가 있음을 확인할 수 있다.
2. 훈련 데이터 준비하기
x = diabetes.data[:, 2]
y = diabetes.target
'AI & BigData' 카테고리의 다른 글
[AI] 로지스틱 손실 함수 - 크로스 엔트로피, 연쇄 법칙(Cross Entropy & Chain Rule) (3) | 2023.06.18 |
---|---|
[AI] YOLOv5를 활용한 히잡, 마스크 객체 인식 실습 (0) | 2023.06.03 |
[AI] 선형회귀분석(Linear regression) (0) | 2023.05.23 |
[Doing Data Science] 시작 (0) | 2023.05.17 |
[후기] Dialogflow를 활용한 콘도 예약·신청 챗봇 구축 (0) | 2023.05.17 |