이전 포스트

 

 

2023.01.05 - [Kaggle/타이타닉] - 타이타닉 생존자 예측 분석 (2-2) EDA(연령대별) - v.1.0.1

 

타이타닉 생존자 예측 분석 (2-2) EDA(연령대별) - v.1.0.1

이전 포스트 타이타닉 생존자 예측 분석 (2-1) EDA(성별) - v.1.0.1 - 개요 우선 데이터 사이언티스트 (이하 DS)의 꿈을 가장 크게 꾸게 해준 타이타닉은 매우 흥미로웠다. 타이타닉에 탑승했던 사람들

drewvvv.tistory.com


 

1. 상관관계 분석 

 

파이썬 데이터테이블에서 상관관계를 분석하는 함수로 pandas의 corr()이 있다. 

df.corr()을 하면 상관관계를 분석해주는데 타이타닉 데이터를 토대로 상관관계를 확인해보면 아래와 같다.

  • 대각선을 기준으로 대칭이어서 한쪽만 살펴보면된다. 
  • pandas의 corr 함수에는 methods라는 파라미터를 입력해서 
    • 연속형 - 연속형 (모수적) 자료간의 선형관계를 나타내는 피어슨 상관계수 (methods="pearson")
    • 연속형 - 연속형 (비모수적) 자료간의 비선형관계를 나타내는 스피어만 순위 상관계수 (methods="spearman")
      • 순위를 사용하기 때문에 연속형 변수가 아닌 순서형 변수에서도 사용 가능(*)
    • 연속형 - 연속형 (비모수적) 자료간의 켄달의 타우 순위 상관계수 (method="kendall") 이 존재한다. 
  • 하지만 사용시 주의할 점이 있는데, corr 함수의 메서드들은 연속형 자료에 대해서 상관관계를 분석한다. 
  • 따라, 범주형 변수의 상관관계를 분석할 경우
    • 명목형(이분형) & 연속형 - Point biserial correlation coefficient
    • 명목형(이분형) & 명목형(이분형) - Phi coefficient 를 사용해야 한다. [참고링크]
    • 또한 상관관계가 인과관계를 설명하지 않는 것의 유의한다. [참링크]

단, scipy의 Point biserial correlation을 활용하여 명목형과 연속형에 대한 상관분석을 하였을 때, 

  • df의 corr에서 해당 컬럼의 값과 동일하게 나오는 것을 확인할 수 있는데, 이는 corr함수가 같이 분석해주는 것으로 보인다. 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
df = train.corr(numeric_only=True)
# 그림 사이즈 지정
fig, ax = plt.subplots( figsize=(7,7) )
 
# 삼각형 마스크를 만든다(위 쪽 삼각형에 True, 아래 삼각형에 False)
mask = np.zeros_like(df, dtype=bool)
mask[np.triu_indices_from(mask)] = True
 
# 히트맵을 그린다
sns.heatmap(df, 
            cmap = 'RdYlBu_r'
            annot = True,   # 실제 값을 표시한다
            mask=mask,      # 표시하지 않을 마스크 부분을 지정한다
            linewidths=.5,  # 경계면 실선으로 구분하기
            cbar_kws={"shrink": .5},# 컬러바 크기 절반으로 줄이기
            vmin = -1,vmax = 1   # 컬러바 범위 -1 ~ 1
           )  
plt.show()
cs

 

  • sns heatmap 함수를 이용하여 corr을 시각화한다.  
1
2
train.loc[ train['Sex'== 'male''ca_Sex'= 0
train.loc[ train['Sex'== 'female''ca_Sex'= 1
cs
  • 데이터 분석 모형은 숫자만 입력으로 받을 수 있기 때문에 성별을 숫자로 변환한다. 

 

  • 이후 pandas의 crosstab을 활용하여 요인별로 교차분석을 하여, 행 및 열 요인 기준별로 빈도를 세어서 도수분포표, 교차표를 만들어 시각화할 수 있다. [참조링크]

 

 

2. 기타 EDA 분석  (선착장별, 객실등급별, 요금별)

 

- 선착장별 EDA

1
2
3
4
5
train.loc[ train['Embarked'== 'C''ca_Embarked'= 0
train.loc[ train['Embarked'== 'Q''ca_Embarked'= 1
train.loc[ train['Embarked'== 'S''ca_Embarked'= 2
 
pd.crosstab(train.ca_Embarked,train.Survived,margins=True).style.background_gradient(cmap='summer_r')
cs

 

  • 선착장을  숫자 변환하고 도수분포표를 확인해본 경우, 선착장별 생존자 차이는 뚜렷한 차이를 보긴 어렵다.

  • 선착장별 요금분포

 

- 객실등급별 EDA

1
2
3
4
5
6
7
8
9
10
11
12
13
14
fig = plt.figure(figsize=(10,10))
 
area01 = fig.add_subplot(2,2,1)
area02 = fig.add_subplot(2,2,2)
area03 = fig.add_subplot(2,2,3)
 
sns.countplot(data = train, x='Pclass', ax=area01)
area01.set_title('객실별 count')
sns.barplot(data = train, x="Pclass", y="Survived", errwidth=0, ax=area02)
area02.set_title('객실별 생존자 count')
sns.countplot(data = train, x='Pclass', hue='Survived', ax=area03)
area03.set_title('객실별 생존 여부 count')
 
plt.show()
cs

 

  • 객실등급이 높을 수록 생존율이 높음을 확인할 수 있다.

 

 

- 객실등급별, Pclass별 요금분포

  • 선착장 위치에 상관없이 1등 객실에 탑승한 고객은 비싼 요금을 지불했다.

 

 
 
 
 
 

 

 

다음 포스트

 

 

2023.01.09 - [분류 전체보기] - 타이타닉 생존자 예측 분석 (3-1) 전처리 (나이예측) - v.1.0.1

 

타이타닉 생존자 예측 분석 (3-1) 전처리 (나이예측) - v.1.0.1

이전 포스트 2023.01.09 - [분류 전체보기] - 타이타닉 생존자 예측 분석 (2-3) EDA(상관관계 및 기타) - v.1.0.1 타이타닉 생존자 예측 분석 (2-3) EDA(상관관계 및 기타) - v.1.0.1 이전 포스트 타이타닉 생존

drewvvv.tistory.com

 

 

 

 
 
 
 
 
 
 
 
 

+ Recent posts