본문 바로가기
머신러닝/프로젝트

Proj 타이타닉호 생존율 분석, 상관관계 찾기

by ADELA_J 2023. 8. 8.

<개요>

목표 타이타닉호 승객 변수를 분석해 생존율과 상관관계를 찾는다
핵심 개념 상관 분석, 상관 계수, 피어슨 상관계수, 히트맵
데이터수집 타이타닉 데이터 : seaborn 내장 데이터셋
데이터준비 결측치 치환 : 중앙값, 최빈값으로 치환
데이터탐색 1. 정보 확인 : info()
2. 차트를 통한 데이터 탐색 : pie(), countplot()
데이터모델링 1. 모든 변수 간 상관 계수 구하기
2. 지정한 두 변수 간 상관계수 구하기

<상관분석>

- 두 변수가 어떤 선형적 관계에 있는지 분석 하는 방법

- 서로 독립적이거나 상관된 관계일 수 있는데 두 변수의 관계의 강도를 상관관계라고 함

- 상관관계의 정도를 나타내는 단위를 모상관 계수 p를 사용(강한지 약한지 수치로 알려줌 ( 원인과 결과는 알려주지않음))

  > 상관계수가 +이면 양의 상관관계. 한 변수가 증가하면 다른 변수도 증가

  > - 이면 음의 상관관계. 한 변수가 증가할 때마다 다른 변수는 감소

    >>> 0.0 ~ 0.2 : 상관관계 거의 없음. / 0.2~0.4 : 약함 / 0.4~0.6: 있음 / 0.6~0.8 : 강함 / 0.8~1.0 : 매우 강함

- 유형 : 단순상관분석(2 변수) /

   다중 상관분석(3개 이상의 변수간 관계의 강도를 측정, 편상관분석 : 하나는 고정하고 두 변수간의 강도를 나타낸거)

- 피어슨 상관계수: 상관계수중에서도 가장 많이 사용함. Pearson correlation coefficient또는 Pearson's r(상관계수)

- 성적이 성별에 영향이 있는가 / 소득수준이 삶의 만족도에 영향이 있는가

  > 있다/ 없다로 나올 수 있는 가설을 검증하기 위한

- 0.05면 엄격하지 않게 적용하는것

- 기준치에 따라서 pvalue가 그보다 작으면 그 가설이 기각이됨 -> 실제로 그렇지 않다는 것

- 상관 분석 결과의 시각화는 두 변수의 관계를 보여주는 산점도나 히트맵을 주로 사용한다.

- pandas 패키지의 데이터프레임에서 corr() 함수를 사용하면 구할 수 있음. (int, float, boolean만 가능)

 

 

 

<데이터수집>

 - seaborn의 내장데이터이기 때문에 그대로 불러온다.

https://github.com/mwaskom/seaborn-data 자세한 내용은 여기

- 데이터 내용 

https://www.kaggle.com/c/titanic/data

- 결측값 개수 확인해보기

- 결측값 채워넣기

원래 처음에는 isna()로 했었는데 isnull()도 가능

 

<데이터 탐색>

titanic.info()로 한것

전체 데이터 891개. 앞에서 결측값을 다 처리해줬기 때문에 모두다 Non-Null

생존자 수를 세어봄. 1이 생존자...! 342명밖에없다ㅠ

 

- 데이터 시각화

▼ 생존자 수를 pie 그래프를 사용하여 그려보았다.

▼ 이번에는 등급별 생존자 수를 countplot 그래프를 그려봄

 

#----------여기까지 한게 EDA(Exploratory Data Analysis)

수집한 데이터가 들어왔을 때, 이를 다양한 각도에서 관찰하고 이해하는 과정. 한마디로 데이터를 분석하기전에 그래프나 통계적인 방법으로 자료를 직관적으로 바로보는 과정.

데이터가 표현하는 현상을 더 잘 이해하고, 잠재적인 문제를 발견할 수 있음. 본격적인 분석에 들어가기전에 데이터의 수집을 결정할 수 있음.

다양한 각도에서 살펴본느 과정을 통해 문제 정의 단계에서 미쳐 발생하지 못했을 다양한 패턴을 발견하고, 이를 바탕으로 기존의 가설을 수정하거나 새로운 가설을 세울 수 있음.

출처 및 더 읽어봐야함 : https://eda-ai-lab.tistory.com/13 /  http://blog.ecore.asia/?p=690 

 

<모델링>

- 상관분석을 위한 상관 계수 구하고 저장하기

대각선 1을 중심으로 위랑 아래랑은 똑같다 (둘중에 하나만 보면됨)

양의 상관관계 = > fare이 많이 내면 많이 낼 수록 살아남을 확률이 높음.

음의 상관관계 = > pclass는 숫자가 증가하면 증가할 수록 살아남지 못함, 남자 성인은 죽을 확률이 높다, 혼자 탑승한 경우에도 생존율이 떨어진다. 

 ===> 이런식으로 수치데이터를 가지고 확실하게 해석해야한다.

 ▶ CSV 형식으로 저장해서 엑셀파일에서도 볼 수 있음

 

- 특정 변수 사이의 상관계수도 따로 구할 수 있다.

 

- 상관 분석을 시각화할수도 있다.

 

- 두 변수의 상관관계도 시각화 할 수 있다.

kind에 따라서 그래프의 모양이 달라진다. https://seaborn.pydata.org/generated/seaborn.catplot.html?highlight=catplot 

 

- 변수 사이의 상관 계수를 히트맵으로 시각해본다. 

히트맵은 카테고리 형식이어야 하므로 10살 단위로 0부터 7까지의 카테고리값으로 치환한다.

그리고 상관계수를 계산하려면 숫자이여야하므로 sex 변수값을 0과 1로 치환하고

가지고 있는 데이터에는 같이 간 형제의 수 sibsp와 부모/자식의 수 parch를 더해서 새로운 family로 추가하여 히트맵에 표현해본다.

이런식으로 데이터를 바꿨음