[파이썬 머신러닝] 사이킷런을 이용해 타이타닉 생존자 예측하기

2021. 3. 8. 23:46프로그래밍-AI & 빅데이터/머신러닝

1. 필요한 라이브러리 및 데이터 import

타이타닉 데이터를 구성하는 column들과  확인하였다

또한 info메소드를 통해 각 컬럼의 정보를 확인하였다. 전체 row는 891개다.

 

2. Null값 처리

 

이 시점에서 주목할 부분은 Null값이다. 사이킷런 알고리즘은 Null을 허용하지 않는다.

info의 결과를 보면 Age, Cabin, Embarked가 null을 가지고 있다

fillna 메소드를 통해 처리하였다.

 

 

3. 이상한 분포에 대한 문자열 처리

 

판다스의 object타입은 string으로 봐도 무방하다.

따라서 object로 표현된 Sex, Cabin, Embarked는 처리가 필요할 수도 있다.

처리를 위해 먼저 분포를 살펴본다

sex와 Embarked는 상식적인 분포를 가지고 있으나, Cabin은 중구난방.

처리가 필요해 보인다.

Cabin은 선실 등급을 뜻하는데, A,B,C와 같은 Class정보만 있으면 되는것 같다.

숫자는 떼고 알파벳클라스만 가져오자

 

 

4. 생존률 분석

 

어느정도 전처리가 끝났다면, 생존확률이 높았던 승객의 특징을 파악해보자.

이때 survived는 label 컬럼이다.

seaborn 패키지를 이용해 시각화를 시켜보았다.

hue args를 포함시켜, pcalss, sex에 따른 생존률도 분석하였다

 

나이의 경우 그룹군이 다양하므로 그에 따른 그룹핑 후 분석하였다.

이러한 분석을 통해 , Sex, Age, PClass는 생존에 영향을 크게 주는 피쳐임이 짐작되었다.

 

5. 인코딩

 

남아있는 문자열들은 숫자형 피쳐로 전환한다.

Sex, cabin, Embarked가 모두 숫자로 전환되었다.

 

 

6. 함수화 및 데이터 세트 분류

 

앞서 정의한 로직들을 재사용을 위해 모두 함수화시켰다.

그 후 데이터를 학습과 테스트용으로 분리하였다.

 

7. 학습/ 예측 /평가

 

세가지의 알고리즘으로 학습-예측-평가를 수행했다

 

LogisticRegression의 정확도가 높다.

하지만 아직 데이터 양도 충분치 않고 최적화 작업이 없었기 때문에 섣부르게 판단 불가하다

때문에 8,9를 거치면 최적의 예측 정확도가 나온다.

 

8. 교차검증: k폴드를 통한 교차검증

9. 하이퍼 파라미터: GridSearchCV 이용