🐍 파이썬 데이터 분석 프로젝트/🫀 심혈관질환 데이터 분석

🫀 심혈관질환 데이터 분석 12. 라이브러리 임포트

nyamin9 2023. 2. 3. 09:54

모바일은 화면을 돌려 가로화면으로 보시는 게 읽으시기 편할 수 있습니다. 돌려서 보시는 걸 추천드릴게요!!

 

 


 

🩸 저번 글까지 해서 데이터에서 서로 연관이 있는 몇 가지 attribute들을 추출해냈습니다.

 

🩸 이번 글부터는 Decision Tree와 Random Forest를 통해서 우리가 찾아낸 attribute들이 target을 얼마나 잘 예측할 수 있는지 알아보도록 하겠습니다. 전처리한 데이터에서 추출한 attribute를 통해 예측하는 방법과 PCA 데이터를 통해 예측하는 방법 중 어떤 것이 보다 효율적이라고 할 수 있을지 알아보는 것이 본 프로젝트에서 classification의 목적입니다.

 

🩸 이번 글에서는 필요한 라이브러리와 데이터들을 알아보고 가져올 것입니다.

 

 


🫀 1. 필요한 라이브러리 임포트

 

🩸 필요한 라이브러리의 용도는 아래와 같습니다.

 

▪ 데이터 전처리 / 임포트

 

 시각화

 

 PCA 분석

 

 Decision Tree

 

 데이터셋 분류 : train / test

 

 Random Forest

 

 ROC Curve, Confusion Matrix, Classification report

 

 

🩸 상당히 많은 라이브러리들이 필요합니다. 아래 코드 박스로 설명해 두었으니 참고하시면 됩니다.

 

# 데이터 임포트 및 전처리를 위한 pandas / numpy library 임포트
import pandas as pd
import numpy as np


# 시각화를 위한 plotly library 임포트 
import plotly.graph_objects as go
import plotly.offline as pyo
pyo.init_notebook_mode()


# 시각화를 위한 seaborn, matplotlib 임포트
import seaborn as sns
import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
%matplotlib inline


# PCA 분석을 위한 라이브러리
# PCA 시각화를 위한 plotly.express 모듈 임포트
# PCA 분석 수행을 위한 sklearn.decomposition 모듈의 PCA library 임포트
# PCA 분석을 위한 데이터 표준화 - sklearn.preprocessing 모듈의 StandardScaler library 임포트
import plotly.express as px
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler


# decision tree를 위한 export_graphviz 라이브러리 임포트
# sklearn 모듈의 tree 라이브러리 임포트
from sklearn.tree import export_graphviz
import graphviz
from sklearn import tree
from os import system    


# 데이터 셋을 train / test 로 분류해주는 라이브러리
from sklearn.model_selection import train_test_split 


# 랜덤포레스트를 위한 데이터 정규화 - StandardScaler 라이브러리
# 랜덤포레스트 생성 RandomForestClassifier 라이브러리
# acuuracy_score 라이브러리 : 정확도 계산 함수
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.metrics import accuracy_score 


# ROC Curve, Confusion Matrix, classification report 생성을 위한 라이브러리
from sklearn.metrics import roc_curve, auc
from sklearn.metrics import (
    classification_report, confusion_matrix,
    ConfusionMatrixDisplay)
from enum import Enum

 

 

 


🫀 2. 데이터 가져오기

 

🩸 classification을 진행하기 위해서 데이터를 필요한 형태로 가져오겠습니다.

 

 


🚩 2.1. 전처리한 데이터 가져오기

 

🩸 먼저 가져올 데이터는 추출한 attribute들로 target을 예측하기 위해 전처리된 데이터입니다.

 

cardio = pd.read_csv('C:\\Users\mingu\Desktop\\cardio_train.csv', sep=';')


# day기준 age를 year 기준으로 변환 : 365로 나누고 소수점 첫째자리에서 반올림
cardio['age'] = cardio['age'] / 365
cardio['age'] = round(cardio['age'], 0).astype('int64').copy()


# BMI attribute 생성
cardio['height'] = cardio['height'] / 100
cardio['BMI'] = cardio['weight'] / (cardio['height']**2)
cardio['BMI'] = round(cardio['BMI'], 2).copy()


# id, height, weight attribute 삭제
cardio = cardio.drop(['id','height','weight'], axis = 1)


# 수축기혈압이 이완기혈압보다 낮은 row 삭제
low_drop_index = cardio[(cardio['ap_hi'] < cardio['ap_lo'])].index
cardio = cardio.drop(low_drop_index).copy()


# 90mmHg 이하, 200mmHg 이상의 Ap_hi 혈압 제거
drop_index_sys = cardio[(cardio['ap_hi'] < 90) | (cardio['ap_hi'] > 170)].index
cardio = cardio.drop(drop_index_sys).copy()


# 60mmHg 이하, 140mmHg 이상의 Ap_lo 혈압 제거
drop_index_dias = cardio[(cardio['ap_lo'] < 65) | (cardio['ap_lo'] > 105)].index
cardio = cardio.drop(drop_index_dias).copy()


cardio

 

 


🚩 2.2. PCA 데이터프레임 가져오기

 

🩸 PCA 데이터의 예측력과 추출 attribute의 예측력을 비교하기 위해서 PCA 데이터프레임을 가져오겠습니다.

 

# target과 feature data 설정
cardio_target = cardio['cardio'].copy()
cardio_target[cardio_target==0] = 'N'
cardio_target[cardio_target==1] = 'Y'
cardio_feat = cardio.drop('cardio',axis = 1)  


# PCA Dataframe 출력
# 사용하려는 principal componenet 개수 정의
n_components = 4


pca = PCA(n_components=n_components)
components = pca.fit_transform(cardio)
PCA_df = pd.DataFrame({'PC1' : components[:,0],
             'PC2' : components[:,1],
             'PC3' : components[:,2],
             'PC4' : components[:,3],
             'cardio' : cardio['cardio']})
             
PCA_df

 

 

 


🩸 이렇게 해서 필요한 라이브러리를 불러오고 필요한 데이터를 불러오는 과정을 살펴보았습니다.

 

🩸 다음 글에서는 Decision Tree를 통해 두 경우의 예측력을 비교하고 어떤 방법이 더 좋은지 비교해보겠습니다😊😊.