Kaggle·데이터분석예제

[Kaggle][문제]타이타닉(titanic)

데이터요리사 2020. 7. 20. 08:00

1. 대회 설명

www.kaggle.com/c/titanic

타이타닉호에서 생존한 승객을 예측하는 모델을 만듭니다.

평가방법 :  승객의 생존여부를 0, 1로 예측하여 제출하고, 정확도를 계산하여 순위를 결정 

 

2. 데이터 설명

Variable Definition Key
survival 생존여부 0 = No, 1 = Yes
pclass 티켓 등급 1 = 1st, 2 = 2nd, 3 = 3rd
sex 성별  
Age 나이  
sibsp 타이타닉에 탑승한 형제/자매 수  
parch 타이타닉에 탑승한 부모/자녀 수  
ticket 티켓번호  
fare 운임(티켓요금)  
cabin 객실 번호  
embarked 탑승한 곳(항구) C = Cherbourg, Q = Queenstown, S = Southampton


3. 데이터 전처리 


  (1) 데이터 훑어보기 

1. 데이터 로딩 : csv 파일을 데이터프레임으로 읽기
2. 학습 데이터 셋의 상위 5개 항목 출력 
3. 학습 데이터 셋의 각 필드 데이터 분포(평균, 최소값, 최대값 등)를 살펴보기
4. 각 컬럼의 데이터 타입 확인하기
5. 'Cabin'필드에는 어떤 값이 있는지 확인하기
6. 생존한 사람, 사망한 사람의 수 확인하기
7. 각 클래스('Pclass')별 탑승객 분포 확인하기
8. 성('Sex')별 탑승객 분표 확인하기
9. 탑승 위치('Embarked') 별 탑승객 분표 확인하기 

 



 (2) 데이터 전처리 

1. null값 체크
2. 결측치 처리(1) : 'Embarked' 필드의 결측치는 값이 가장 많은 'S'로 할당하기
3. 결측치 처리(2) : 'Age' 필드의 결측치는 값이 중간값으로 할당하기
4. 'Name'필드에서 신분을 나타내는 단어를 뽑아서 'Title' 필드에 할당하기 
   (힌트1) :  '.'을 기준으로 앞에 위치하는 문자열을 추출 
   (힌트2):   train['Name'].str.extract(' ([A-Za-z]+)\.', expand = False)


5. 'Title' 필드의 카테고리를 6개의 항목으로 변경하기  

  • 'Officer': 'Capt', 'Col', 'Major', 'Dr', 'Rev'

  • 'Master' : 'Jonkheer', 'Master'

  • 'Royalty' : 'Don', 'Sir', 'the Countess', 'Lady', 'Dona'

  • 'Mrs' : 'Mme', 'Ms', 'Mrs'

  • 'Miss': 'Mlle', 'Miss'

'Mr' : 'Mr'6. 변수 y를 선언해서 학습할 목표변수(=종속변수)인 'Survived'필드값을 담기


7. 나이('Age') 필드를 그룹핑하여 'AgeGroup'필드 생성하여 할당하기 
    0~18세: Baby 
    19~25세: Youth 
    26~35세: YoungAdult 
    36~60세: MiddleAged 
    61~100세: Senior 

8. 'AgeGroup'이 'Baby'인 raw만 출력하기

 



 (3) 데이터 시각화 

0. 라이브러리 import
1. 학습 데이터셋(train)의 데이터 분포확인하기 
   (힌트) 히스토그램 그리기, bins = 20
2. 성별('Sex')의 생존여부('Survived') 데이터 분포확인하기 : barplot
3. 탑승 클래스('Pclass')별 + 성별('Sex')  생존여부('Survived') 데이터 분포확인하기 : barplot 
4. 전체 변수의 correlation에 대해 히트맵 그리기
5, 연령분포('AgeGroup')별 + 클래스('Pclass')별   생존여부('Survived') 데이터 분포확인하기: barplot
6. 형제/자매수(''SibSp")별  + 클래스('Pclass') 별 생존여부("Survived") 

 


 (4) 학습을 위한 데이터 준비  
1. 'Name', 'Ticket', 'SibSp', 'Parch', 'Cabin' , 'AgeGroup'컬럼 삭제하기 
2. 텍스트 데이터 숫자 변환 
3. 학습용, 테스트용 데이터 셋 분리하기 

728x90