살콤아내 자기계발/파이썬

파이썬 머신러닝 완벽가이드 2주차 정리 (사이킷런 131pg, 타이타닉 생존자 예측)

살콤아내 2021. 4. 29. 12:44
728x90
반응형

파이썬머신러닝완벽가이드 133pg.py
0.01MB

 

131pg. 사이킷런으로 수행하는 타이타닉 생존자 예측

 

 

- titanic 파일을 열어 대략적인 데이터 구조/타입을 본다.

- Age, Cabin, Embarked 열의 null값을 fillna로 채워넣는다.

- titanic_df.isnull( )은 bullean값의 DataFrame을 말한다. 

 

- 여기에 .sum( )을 적용하면 각 Column값의 True값의 합을 Series 타입으로 보여준다.

- titanic_df.isnull( ).sum( )에 다시 .sum( )을 적용하면 각 series의 합이기 때문에 0이라는 int값 하나가 나온다.

 

 

-value.coutns( ) 각 Column별로 unique한 값이 몇개가 있는지 count해줌

 

- 그런데 Cabin 값이 유난히 많다. 선실 타입이 중요하지 선실 번호는 중요하지 않으므로 선실 타입만 str을 이용해 추출해보자

그러면 다음과 같은 선실타입을 뽑아낼 수 있다. head(3)이므로 결과값에는 위에 3개만 표시가 됨.

 

 

Sex, Survived Column을 기준으로 분류를 한 다음 survived column에 해당하는 non-null 개수를 더한다.

 

Sex Columnd을 기준으로 분류한 다음 Survived Column에 해당되는 non-null 개수를 더한다.

막대그래프 barplot은 시계열데이터가 아닌 데이터를 다루기에 좋다.

- 성별에 따른 생존률을 그래프로 보자

 

 

- Pclass당 남녀별 생존률을 그려보자

 

- 책에없는 내용이다. 다음과 같이 Pclass와 성별별로 생존자수를 출력해보자. (위의 barplot을 추출한 것)

 

- apply lambda를 이용해서 age에 따른 구분값 설정한 그래프

 

titnanic_df라는 데이터에 'Age_cat'이라는 Column을 추가해서 lambda함수 get_category(age)를 적용한다.

sns.barplot을 호출한 뒤, 'Age_cat' Column을 삭제한다.

 

 

참고) 만약에 order=group_names를 지운다면 다음과 같은 그래프가 만들어진다. (DataFrame에 저장된 데이터 순서대로 출력되는 것 같음)

 

 

 

 

-LabelEncoder 클래스

'Cabin', 'Sex', 'Embarked'의 Column값 (string)이 labelencoding 된다(값 유니크한 값들을 숫자형태 변환)

 

 

- 데이터 전처리

def transform_features는 위에 설정한 함수를 한번에 끝낼 수 있는 데이터 전처리 함수이다.

 

 

 

141pg. 다시 타이타닉 파일을 불러와서 데이터 전처리부터 실행시켜보자

- transform_features(X_titanic_df)  로 기존의 정의된 함수를 이용해 데이터 전처리를 한다.

- train_test_split를 통해 학습데이터/테스트데이터를 나눈다

- 각각의 사이킷런 알고리즘을 활용해서 학습/예측/평가를 한다.

참고) LogisticRegression 정확도가 책 142pg와는 다르다. (책에는 0.8659라고 나옴. parameter 설정 limit가 원인)

 

- KFold 교차검증 수행을 한다

 

dt_clf의 교차검증 estimator는 decisiontree이다.

 

 

- stratified KFold로 교차검증 한다 (cross_val_score 함수 사용)

 

- GridSearchCV 최적 하이퍼 파라미터를 설정한다

- 파라미터 조합 경우의 수는 36개이다. CV값은 5이다. 즉 36x5=180번 train-test 알고리즘을 도는 것이다.

- best_dclf = grid_dclf.best__estimator__ 는 최적의 하이퍼 파라미터 설정으로 학습된 모델 estimator를 best_dclf에 담는다.

- dpredictions에는 테스트 데이터에서 survived에 해당되는 예측값이 들어있다. (X_test에서 Sex 0은 female임)

- 3등급 선실의 여성은 생존했고, 3등급 선실의 남성은 사망했다고 예측할 수 있다. 이러한 예측 정확도는 0.8715이다.

 

728x90
반응형