ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [상관분석+히트맵] 타이타닉호 생존율 분석하기
    DataAnalysis/모델 분석 2022. 6. 1. 00:56

    <개념>

    1. 상관 분석

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

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

    -상관 분석에서는 상관관계의 정도를 나타내는 단위로 모상관 계수 ρ를 사용

     

    2.단순 상관 분석

    - 두 변수가 어느 정도 강한 관계에 있는지 측정

     

    3. 다중 상관 분석

    -세 개 이상의 변수 간 관계의 강도를 측정

    -편상관 분석: 다른 변수와의 관계를 고정하고 두 변수 간 관계의 강도를 나타내는 것

     

    4. 상관 계수 ρ

    -변수 간 관계의정도(0~1)와 방향(+,-)을 하나의 수치로 요약해주는 지수로 -1~1 사이의 값

    -상관 계수 +: 양의 상관관계, 한 변수가 증가하면 다른 변수도 증가

    -상관 계수 - : 음의 상관관계, 한 변수가 증가할 때 다른 변수는 감소

    0.0~0.2 상관관계가 거의 없음
    0.2~0.4 약한 상관관계
    0.4~0.6 상관관계가 있음
    0.6~0.8 강한 상광관계
    0.8~1.0 매우 강한 상관관계

     

    <프로젝트>

    데이터 정리

    import seaborn as sns
    import pandas as pd
    titanic = sns.load_dataset("titanic")
    
    titanic.isnull().sum()
    titanic['age'] = titanic['age'].fillna(titanic['age'].median())
    titanic['embark_town'] = titanic['embark_town'].fillna('Southampton')
    titanic['deck'] = titanic['deck'].fillna('C')

     

    파이차트 그리기

    import matplotlib.pyplot as plt
    f,ax = plt.subplots(1, 2, figsize = (10, 5))
    ################################강의듣거나 변수 찾아보기 ################
    #pie 차트는남자승객의생존율을나타내도록설정
    titanic['survived'][titanic['sex'] == 'male'].value_counts().plot.pie(explode = [0,0.1], autopct = '%1.1f%%', ax = ax[0], shadow = True)
    titanic['survived'][titanic['sex'] == 'female'].value_counts().plot.pie(explode = [0,0.1], autopct = '%1.1f%%', ax = ax[1], shadow = True)
    ax[0].set_title('Survived (Male)')
    ax[1].set_title('Survived (Female)')
    plt.show()
    

     

    등급별 생존자 수를 차트로 나타내기

    #등급별 생존자 수를 차트로 나타내기
    #pclass를 x축, survived=0,1 개수를 계산하여 y축으로 하는 countplot을 설정
    sns.countplot('pclass', hue = 'survived', data = titanic)
    plt.title('Pclass vs Survived')
    plt.show()

     

    상관계수 구하기

    #상관 분석을 위한 상한 계수 구하고 저장하기
    #피어슨상관계수를 적용하여상관계수를구함
    titanic_corr = titanic.corr(method = 'pearson')
    #survived와 adult_male변수 사이의 상관계수를구함
    titanic['survived'].corr(titanic['adult_male'])

     

    산점도로 상관분석 시각화하기 : pairplot()

    #1. 산점도로상관분석시각화하기
    #변수간의상관분석시각화를위해pairplot() 그리기
    sns.pairplot(titanic, hue = 'survived')
    plt.show()

    pairplot()함수는 그리드 형태로 데이터프레임에 있는 각 데이터 열의 조합을 산점도로 그린다. 그리고 같은 데이터가 만나는 대각선 영역에는 히스토그램을 그린다.

     

    두변수로 상관분석 시각화: catplot()

    # 2.두변수의상관관계시각화하기
    # 생존자의 객실 등급과 성별관계를 catplot()으로 그리기
    #pclass와survived 변수의관계를차트로그림 hue인자를이용하여종속변수를sex로지정
    sns.catplot(x = 'pclass', y = 'survived', hue = 'sex', data = titanic, kind = 'point’)
    plt.show()

     

    히트맵으로 시각화

    #히트맵으로 시각화
    def category_age(x):
        if x < 10:
            return 0
        elif x < 20:
            return 1
        elif x < 30:
            return 2
        elif x < 40:
            return 3
        elif x < 50:
            return 4
        elif x < 60:
            return 5
        elif x < 70:
            return 6
        else:
            return 7
    
    #category 0~7개로
    titanic['age2'] = titanic['age'].apply(category_age)
    titanic['sex'] = titanic['sex'].map({'male':1, 'female':0})
    titanic['family'] = titanic['sibsp'] + titanic['parch'] + 1
    #titanic.to_csv('C:/Users/kmj/My_Python/7장_data/titanic3.csv', index =False)
    heatmap_data = titanic[['survived', 'sex', 'age2', 'family', 'pclass','fare']]
    #비트맵에 사용할 색상맵을 지정
    colormap = plt.cm.RdBu
    ###################계쑤 찾아보기 #######################
    #corr() 함수로구한상관계수로히트맵을생성
    sns.heatmap(heatmap_data.astype(float).corr(), linewidths = 0.1, vmax= 1.0, square = True, cmap = colormap, linecolor = 'white', annot = True,annot_kws = {"size": 10})
    plt.show()

     

     

     

    출처: 데이터 과학 기반의 파이썬 빅데이터 분석(이지은 지음)책을 공부하며 작성한 내용입니다.

Designed by Tistory.