사용 데이터 : Stroke Prediction Dataset
데이터 출처| https://www.kaggle.com/datasets/fedesoriano/stroke-prediction-dataset
데이터의 목적
성별, 연령, 다양한 질병 및 흡연 상태와 같은 데이터를 이용하여 환자가 뇌졸중에 걸릴 가능성이 있는지 예측하는 데 사용된다.
데이터 형태: csv 파일
데이터 column 의미
- id: 고유식별자
- gender: "Male", "Female", "Other"
- age: 환자의 나이
- hypertension: 환자가 고혈압이 없는경우 0, 있는 경우 1
- heart_disease: 환자가 심장 질환이 없으면 0, 있으면 1
- ever_married: "No" 또는 "Yes"
- work_type: "children", "Govt_jov", "Never_worked", "Private", "Self-employed"
- Residence_type: "Rural" 또는 "Urban" (거주환경:농촌 or 도시)
- avg_glucose_level: 혈액 내 평균 혈당 수준
- bmi: 체질량 지수
- smoking_status: "formerly smoked", "never smoked", "smokes", "Unknown"*
-> "Unknown"은 이 환자에 대한 정보를 사용할 수 없음을 의미 - stroke: 환자가 뇌졸증을 앓은 경우 1, 그렇지 않은 경우 0
Stroke 데이터
총 5110개의 row, 12개의 column
전체적인 flow
smoking_status 중 Unknown은 환자 정보를 사용할 수 없다니까 행은 따로 빼두기
Unknown의 개수는 1544개
최종 사용할 데이터는 5110-1544 = 3566개 row
결측 값 확인하기
bmi에 있는 N/A을 제외하고는 다른 필드에서는 결측 값은 없다.
bmi 결측값 채우기
성별과 나이(50이상, 20 이상, 20 미만)로 나눠서 각각의 평균을 구한 뒤,
각 그룹의 해당하는 값을 채워넣었다.
그 외 전처리하기
ever_married에서 No를 0, Yes를 1로 변경하기
gender에서 Male은 1, Female은 2, other은 3으로 변경하기
Residence_type에서 "Rural", "Urban"도 원핫인코딩으로 새 필드 만들기
work_type에서 "children", "Govt_job", "Never_worked", "Private", "Self-employed"를 원핫인코딩으로 새 필드 만들기
smoking_status에서 "formerly smoked", "never smoked", "smokes"를 원핫인코딩으로 새 필드 만들기
필요한 필드 선택과 데이터형 변경하기
최종 데이터 모습
최종 데이터
활용
(파이썬 이용) 최종 내보내진 데이터를 활용해서 train,validation,test 데이터로 나눈뒤,
XGBClassifier 모델을 활용해서 stroke를 예측할 수 있는 모델을 만들었다.
roc_auc 점수 구하는 함수 정의하고,
옵튜나를 활용해서 최적 파라미터 찾았다.
찾은 파라미터 값을 다시 모델에 넣은 뒤 auc 점수 확인했다.
학습된 모델을 이용해서 test데이터로 stroke 예측한 후, log_loss값을 구했다
현재 데이터 총 3566개 row 중 stroke의 value는 0은 3364개, 1은 202개로 불균형 상태이므로,
이후에 불균형을 처리한 후 모델을 학습시키면 더 좋은 결과를 얻을 수도 있을 것이다.
또한, 추가 컬럼을 만들거나 다른 모델 사용, 파라미터 튜닝, 앙상블을 통해 더 나은 성능을 얻을 수 있을 것이다.
'연습 > Pentaho' 카테고리의 다른 글
[Pentaho] Salary Classification (0) | 2022.05.04 |
---|---|
[Pentaho활용] 노래연습장 data (1) | 2022.04.19 |
[Pentaho활용] Amazon Seller-Order Status Prediction (0) | 2022.04.14 |