titanic

안선경·2023년 3월 15일
0

ML_study

목록 보기
3/25

  • 타이타닉 승객 정보를 통해 EDA분석 후 머신러닝을 통해 디카프리오와 윈슬렛의 생존 확률을 구해보자
  • 먼저 준비한 타이타닉 승객에 대한 정보를 DataFrame형식으로 저장
  • matplotlib.pyplot과 seaborn으로 시각화를 통한 데이터 분석 시작
  • 앞에 그래프는 생존자와 사망자의 수치를 파이 그래프로 그려보니, 전체 승객 중 61.8% 사망했으며, 38.2%의 승객이 생존함
  • 다음 그래프는 사망자와 생존자의 인원을 표시
  • 전체적으로 생존자에 비해 사망자의 수가 큼
  • 다음으로 처음 그래프는 여성과 남성의 승객 숫자를 bar형식으로 그래프를 그렸다
  • 여성에 비해 남성의 탑승 비율이 큼
  • 하지만 여성과 남성의 생존 비율을 분석 결과 여성은 사망자 대비 생존자가 많지만, 남성의 경우 생존자 대비 사망자의 비중이 큼
  • crosstab기능을 통해 승객 class를 인덱스로, 생존자를 column으로 분석 결과 퍼스트 클래스에서 뒤로 갈수록 생존자의 비중이 낮아짐
  • 승객 class별 남성 및 여성의 탑승자 수를 분석 결과 3번째 클래스에 남성 탑승 비율이 압도적으로 높음
  • 나이에 따른 탑승자 수를 확대해서 시각화 결과 20~30대에 많은 탑승 비중을 보임
  • 다음으로 클래스별 남성과 여성의 생존자 비율을 분석 결과 마지막 클래스 여성 생존자의 수가 가장 많으며,
  • 가장 많은 탑승 비중을 차지하는 마지막 클래스 남성의 생존자 수가 많이 낮음
  • 이번에는 age컬럼을 수준에 따라 5가지 영역으로 구분해서 age_category 컬럼을 추가
  • 클래스별, age_category별, 성별에 따른 생존자 비중을 나타냄
  • 클래스는 1등급 클래스의 생존확률이 가장 높으며, 연령대별은 baby(0~7세) 생존확률이 가장 높고, 성별은 여성이 상대적으로 높음

  • 여성과 남성의 그래프를 구분하고, 생존자와 사망자의 수를 그래프를 표현함
  • 전체적으로 여성의 경우 생존자의 수가 많으며, 남성의 경우 사망자의 수가 많음
  • 이번에는 신분에 따른 생존자 비율을 분석
  • name 컬럼에서 re 모듈을 통해 신분만 별도의 컬럼으로 추가
  • 신분을 분석 결과 귀족 여성, 귀족 남성, 평민 남성, 평민 여성으로 구분
  • 귀족 여성의 경우 모두 살았으며, 평민 남성의 생존 확률이 가장 낮음
  • 이제 머신러닝을 사용하기 위해 먼저 성별의 자료값을 sklearn의 LabelEncoder를 통해 값을 변환
  • 교육시킨 자료를 다시 컬럼에 추가
  • 마지막으로 각 변수간의 상관계수를 확인
  • 생존자 컬럼을 제외한 값을 x에 생존자 자료를 y에 저장
  • 자료를 8:2으로 구분 후, 머신러닝을 통해 y값을 정답으로 교육시킴
  • 성능 확인 결과 76%의 값이 나옴
  • 이제 디카프리오, 윈슬렛의 자료를 입력 후 머신러닝에 분석 결과
  • 디카프리오는 23%로 생존하며, 윈슬렛은 100%로 생존함
  • 영화의 결말이 맞네요...
profile
상황을 바꿀 수 없다면, 나를 바꾸자

0개의 댓글