ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [머신러닝][Kaggle][Python] 개인 건강 데이터를 이용한 심부전 예측 모델1
    머신러닝 | 딥러닝 2022. 5. 22. 21:10

    출처 : https://www.kaggle.com/datasets/andrewmvd/heart-failure-clinical-data

     

    Heart Failure Prediction

    12 clinical features por predicting death events.

    www.kaggle.com

    데이터 소개

    Kaggle의 Heart Failure Prediction Dataset 이용

    Dataset 구성

    age: 환자의 나이
    anaemia: 환자의 빈혈증 여부 (0: 정상, 1: 빈혈)
    creatinine_phosphokinase: 크레아틴키나제 검사 결과
    diabetes: 당뇨병 여부 (0: 정상, 1: 당뇨)
    ejection_fraction: 박출계수 (%)
    high_blood_pressure: 고혈압 여부 (0: 정상, 1: 고혈압)
    platelets: 혈소판 수 (kiloplatelets/mL)
    serum_creatinine: 혈중 크레아틴 레벨 (mg/dL)
    serum_sodium: 혈중 나트륨 레벨 (mEq/L)
    sex: 성별 (0: 여성, 1: 남성)
    smoking: 흡연 여부 (0: 비흡연, 1: 흡연)
    time: 관찰 기간 (일)
    DEATH_EVENT: 사망 여부 (0: 생존, 1: 사망)

    패키지 불러오기

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    import seaborn as sns
    from sklearn.preprocessing import StandardScaler
    from sklearn.model_selection import train_test_split
    from sklearn.linear_model import LogisticRegression
    from sklearn.metrics import classification_report
    from xgboost import XGBClassifier

    Kaggle API 세팅

    import os
    os.environ['KAGGLE_USERNAME'] = (Kaggle API Username)
    os.environ['KAGGLE_KEY'] = (Kaggle API Key)

    Dataset 불러오기

    !kaggle datasets download -d andrewmvd/heart-failure-clinical-data
    !unzip '*.zip' # 파일이름에 '.zip'이 포한된 파일 압축해제
    # 데이터셋 할당
    df = pd.read_csv('heart_failure_clinical_records_dataset.csv')

    EDA

    df.head(10) # 위의 10개 행 출력
    df.info() # 각 열의 결측치, 데이터형, 행 수 출력
    df.describe # 각 열의 수, 평균, 표준편차, 4분위수, 최대값, 최솟값 출력

    연관성 파악을 위한 시각화

    나이 - 사망 히스토그램

    sns.histplot(x='age', data=df, hue='DEATH_EVENT', kde=True)

    크레아틴키나제 - 사망 히스토그램

    sns.histplot(x='creatinine_phosphokinase',data=df, hue='DEATH_EVENT',kde=True)

    박출계수 - 사망 히스토그램

    sns.histplot(x='ejection_fraction', data=df, bins=13, hue='DEATH_EVENT', kde=True)

    혈소판 수 - 사망 히스토그램

    sns.histplot(x='platelets', data=df, hue='DEATH_EVENT')

    관찰 기간 - 사망 히스토그램

    sns.histplot(x='time', data=df, hue='DEATH_EVENT', kde=True)

    혈소판 수 - 크레아틴키나제 - 사망 조인트 그래프

    혈소판 수와 크레아틴키나제 기준으로 사망자 분포 확인

    sns.jointplot(x='platelets', y='creatinine_phosphokinase', hue='DEATH_EVENT', data=df, alpha=0.3)

    # Dataset의 데이터중 사망자 데이터만 이용
    sns.jointplot(x='platelets', y='creatinine_phosphokinase', data=df[df['DEATH_EVENT'] == 1])

    혈소판 수와 크레아틴키나제의 변화에 따른 사망자 수 변화에 경향 파악

    박출계수 - 혈중 크레아틴 레벨 - 사망 조인트 그래프

    박출계수와 혈중 크레아틴 레벨을 기준으로 사망자 분포 확인

    sns.jointplot(x='ejection_fraction', y='serum_creatinine', data=df, hue='DEATH_EVENT')

    # Dataset의 데이터중 사망자 데이터만 이용
    sns.jointplot(x='ejection_fraction', y='serum_creatinine', data=df[df['DEATH_EVENT'] == 1])

    박출계수와 혈중 크레아틴 레벨의 변화에 따른 사망자 수 변화에 경향 파악

    댓글

Designed by Tistory.