본문 바로가기
IT & 데이터 사이언스/데이터 분석 실습

[DACON] 심장질환예측 경진대회(Basic)(3)

by 바른 호랑이 2021. 12. 23.
728x90
반응형

※ DACON 링크

 

심장 질환 예측 경진대회 - DACON

좋아요는 1분 내에 한 번만 클릭 할 수 있습니다.

dacon.io

※ 이전 분석내용

 

[DACON] 심장질환예측 경진대회(Basic)(2)

※ DACON 링크 : https://dacon.io/competitions/official/235848/overview/description 심장 질환 예측 경진대회 - DACON 좋아요는 1분 내에 한 번만 클릭 할 수 있습니다. dacon.io ※ 이전 분석내용 : https:/..

data-is-power.tistory.com

이전 분석까지 의사결정나무, 나이브 베이지안, KNN, 로지스틱 회귀, 신경망 모델로 분석을 해보았다. 추가적으로 SVM모델까지포함하여 분석을 해보았다. SVM모델 또한 로지스틱회귀 모델과 비슷한 수준으로 높은 정확도를 기록하였으며, 자세한 결과와 코드는 아래와 같다.

 

from sklearn.metrics import classification_report, confusion_matrix
from sklearn import svm
svm = svm.SVC(kernel = "linear", C = 10)
svm.fit(df_train[x_list], df_train.target)
print(classification_report(df_train.target, svm.predict(df_train[x_list])))

SVM모델과 로지스틱 회귀모델이 가장 높은 정확도로 예측을 하고 있었기에 최종 예측 모델은 SVM과 로지스틱 회귀모델 2가지를 사용하기로 결정하였다. 모델에 들어간 독립변수들의 개수를 연관성분석을 통해 축소시켰음에도 9개나 되었고, 독립변수들간의 상관성 또한 고려하지 않고 분석을 했기에 그와 관련된 전처리를 해준 후에 분석을 하기로 결정하였다. 추가적으로 데이터의 컬럼 중 혈관의 개수를 나타내는 ca 열에 해당하는 값이 훈련데이터에서는 Null값을 나타내는 4라는 값이 없는데 평가데이터에서는 존재하였기에 그에 대한 전처리를 하고 분석 및 예측하는 것으로 결정하였다. 그와 관련된 처리 코드는 아래와 같다.

 

간단하게 상관성을 살펴보기위해 피어슨 상관계수를 사용했다. (제대로 관계를 확인하고 싶다면 변수의 성질에 따라 다르게 비교분석하는게 훨씬 좋다.) 해당 수치로 서로 연관성이 있는 변수들을 확인하고, target변수와의 상관성이 낮은 순서대로 변수들을 추가적으로 제거한 후 분석을 해보기로 결정하였다.

 

# 서로 연관성이 있는 변수들
# thalach : oldpeak, slope, exang, age_gr
# oldpeak : thalach, slope, exang, thal
# slope : oldpeak, thalach, exang
# ca : age_gr / sex : 딱히 없음
# cp : exang, thal, thalach / exang : cp, thalach, slope
# thal : age_gr, oldpeak, sex, cp, exang
# 변수로 사용한 리스트 추론 : ca, cp, thal, oldpeak, sex, age_gr

 

분석을 통해 최종적으로 사용할 독립변수요소들은 thalach, oldpeak, ca, sex, cp, thal, age_gr 6개로 결정하였으며, 여기에 추가적으로 ca열에 4로 표기된 변수들을 각각 0, 1, 2, 3으로 변환하여 분석결과를 작성해보았다. 그에 따른 결과는 아래와 같다.

 

 

훈련데이터 셋에서는 정확도가 더 높아졌지만 실제 예측결과는 아쉽게도 오히려 더 낮아지는 결과가 산출되었다. 그래도 이번 분석을 진행하며 여러가지 모델을 사용하여 분석하는 법을 숙달할 수 있었으며, 다음 DACON대회를 참가할때는 변수처리와 시각화에 보다 주안점을 두고 분석을 진행해봐야겠다.

 

P.S 개발자가 되기위해 공부중입니다. 잘못된 부분을 댓글로 남겨주시면 학습하는데 큰 도움이 될 거 같습니다.

세부코드가 궁금하신 분들은 아래 GitHub를 참고해주시기 바랍니다.

 

※ Github 

 

GitHub - Jeong-Beom/TIL: 교육받은 내용을 기록하기 위한 레파지토리입니다.

교육받은 내용을 기록하기 위한 레파지토리입니다. Contribute to Jeong-Beom/TIL development by creating an account on GitHub.

github.com

 

728x90
반응형

댓글