카테고리 없음

[삼성 SDS Brightics #3-3] 브라이틱스 스튜디오로 Kaggle Competition에 제출해보기 2탄

song2001 2021. 6. 22. 15:14

안녕하세요!

오늘은 캐글 타이타닉 대회 참가하기 2탄을 갖고 왔습니다!

제가 예측한 결과를 캐글에 올려봤는데,

몇 등 했는지는 블로그 마지막에 올릴 테니

끝까지 봐주세요!

캐글 타이타닉 대회의 목적은

탑승객들의 여러 가지 특징을 통해

생존 여부를 맞추는 거예요!

(0 = 생존하지 못함, 0=생존함)

1탄 안 보신 분들은 아래 링크로 ㄱㄱ

https://song2001.tistory.com/4


이번 실습을 위해, 아직 브라이틱스 스튜디오 설치 안 하신 분들은

아래 블로그를 확인해 주세요!!

https://blog.naver.com/hasong0131/222387019316

설치하신 분들은 바로 아래 링크를 클릭해 주세요

http://127.0.0.1:3000/


이번 블로그는 step by step

튜토리얼 형식 말고

제가 접근한 방법과 캐글에 제출하는 방법에 대해서

얘기해보려고 해요.

등수를 살짝 스포를 하자면

하위권이라 ㅠ0ㅠ,,

다음주에 수정해서 캐글에 한 번 더 제출할 거니까,

자세한 튜토리얼은 다음 주에 올릴게용!

이건 전체적인 그림!

위에 있는 python script 줄은 train.csv 파일이고

밑에 있는 python script 줄은 test.csv 파일이에요.

 

​Step 1) 데이터 전처리

train.csv에는 탑승객들의 여러 가지 특징(feature)이 있는데,

그 특징들을 분석하기 좋은쪽으로

데이터 가공하는걸 feature engineering 이라 불러요.

예를들어, 승객의 이름은 생존여부와 상관없겠지만

Miss., Mrs.와 같은 존칭을 통해

성별도 알 수 있고 나이도 예상해볼 수 있죠.

이런식으로 각 column 마다

feature engineering 을 해줬는데요,

제 feature engineering 순서는

1) python script: Name에서 Mr., Ms. 와 같은 존칭 추출

2) Replace Missing Number: Age 에 있는 null 값 채우기

3) One Hot Encoder: String 타입으로 되어있던 성별을 0,1로 바꾸기

3) Add Columns: 1번에서 추출했던 존칭을 숫자로 바꾸기

4) Add Columns: String 타입으로 되어있던 Embarked 장소 1,2,3으로 바꾸기

5) Add Function Columns: SibSp와 Parch 더해서 새로운 column 만들기

6) Add Column: 나이를 네 개 카테고리로 나누기

7) Select Column: 필요한 column만 남겨두기

7번에서 저는 PassengerId, Ticket number, Cabin 은 제외하고

나머지는 새로 만든 column으로 select 해주었어요.

 

Step 2) Modeling - 선형회귀로 생존 여부 예측하기

모델링 순서는:

1) Linear Regression Train: train.csv로 모델 만들기

2) Linear Regression Predict: linear regression train 모델로 test.csv 맞추기

이번엔 'Split Data' 함수를 안쓰고

직접 train.csv 와 test.csv 사용한 이유가

캐글에서 점수를 받고 싶으면

test.csv에 있는 passenger id의 생존 여부를 맞혀야 하기 때문에

번거롭지만,

test 데이터와 train 데이터 두 개다

똑같은 feature engineering으로 해줬어요.

 

​Step 3) 캐글에 제출

캐글에 sample submission 보면

Survived는 0이나 1의 값이 되어야 하기 때문에,

소수점으로 나온 prediction 값을

0,1로 바꿔주었어요.

소수점으로 나온 prediction

'Add Column' 함수를 사용해서

1 보다 작으면 0,

1과 같거나 크면 1로 바꿔주었답니다.

그다음은 다운로드 버튼을 누르고,

'Column Delimiter'는 Comma로 해주세요.

그러면 CSV 파일로 컴퓨터에 저장돼요!

 

 

그다음은, 샘플로 올라와 있는

gendersubmssion.csv 파일을 다운로드하고

원래 있던 Survived를 지운 다음

제가 예측한 값을 복사 붙이기 해줍니다.

맥북 사용자들은

이걸 File -> Export to -> CSV 하면 csv 파일로 저장돼요.

그다음 캐글에 가서 'Submit Predictions' 에다 제출하면
바로 점수 나오고, 
'Leaderboard' 클릭하면 등수도 나와요.

Step 4) 캐글 등수 / 점수

이렇게 해서 제출한 제 등수는,,

49012명 중 47680이었답니다.

점수는 0.63157로

대략 63%의 탑승객의 생존 여부를 맞혔다는 뜻이에요!

그래도 긍정적으로 생각해 보면

반 이상은 맞혔네요 우하하

그리고 코딩없이 간단하고 빠르게

분석할 수 있어서 좋았어요!!

아마 데이터 전처리 중

제대로 예측하지 못한 값이 있어서

이렇게 나온 것 같아요.

Cabin 포함 안 한 거랑,

Age의 범위와 null 값을 채울 때

정확도가 떨어졌을 거라

생각해요.

아니면 마지막에 Add column에서

소수점으로 나온 prediction 을 0과 1로 바꿔줄 때

저는 1보다 같거나 큰값만 1로 해줬는데,

다음에는 다른 숫자로 해봐도 될 것 같아요.

(0.9 같은 건 1이랑 더 가까우니까)

오늘 블로그는 여기까지!

다음엔 조금 더 나은 점수를 들고 와볼게요!

[본 포스팅은 Brightics 서포터즈로서 직접 체험하고 작성한 리뷰입니다.]