반응형

2021년 8월 2일 부터 시작한다고 공지되어있었기 때문에, 사실 어제 부터 메일이 언제오려나.. 하고 기다리고 있었다.
함께 퀀트 스터디를 하는 멤버분께서도 캐글 챌린지를 신청하셨는데, 나에게 먼저 메일을 받았는지 여쭤보셧다.
나만 못받은줄 알고 노심초사 했는데, 아직 모든 참가자에게 메일송부가 되지 않은 것 같아서 조금더 기다려보기로했다.

메일함에 반가운 이름이 보인다!  지난번에 신청한 "30 Days of ML" 캐글 챌린지가 시작되었다!
8월 3일 오전 5시쯤에 메일이 도착했는데, 아무래도 미국과 한국의 시차때문에 그런 것 같다.

아무튼 1일차에 부여된 과제는 다음과 같다.

Today's Assignment - day 1

  1. Follow the instructions in this notebook to get started with Kaggle
  2. Join 30 Days of ML Discord Community and introduce yourself in the #introductions channel
    이번 주에는 데이터 사이언스의 가장 중요한 언어인 파이썬의 기초에 대해 다룬다고 한다. 
    요즘에 내가 기본이 가장 중요하다는 것을 간과하지 말자고 다짐하며 파이썬 기본 문법강의를 올리고 있는데, 크게 어려울 것 같진 않았다. 벌써 설렌다!

1일차의 과제를 수행하는 링크이다.

https://www.kaggle.com/alexisbcook/getting-started-with-kaggle?utm_medium=email&utm_source=gamma&utm_campaign=thirty-days-of-ml&utm_content=day-1

 

Getting Started with Kaggle

Explore and run machine learning code with Kaggle Notebooks | Using data from no data sources

www.kaggle.com

Step 1: Your Kaggle profile 

첫번째 단계는 캐글프로필을 생성하고 가꾸는 일이다.

왼쪽사진이 DACON의 프로필, 오른쪽이 Kaggle의 프로필이다. 굉장히 닮아있다.
DACON과 Kaggle 두 곳에서 모두 열심히 해서 많은 경험을 쌓아야 겠다.

Step 2: Kaggle progression

DACON과 Kaggle에는 등급이 있다.
Kaggle기준으로 말하자면, 아래 사진과 같이 기여도에 따른 등급이 있다.

Kaggle tiers
캐글의 끝판왕 그랜드 마스터 티어!!


오늘 내가 해야할 일은 Contributor로 프로필을 업그레이드 시키는 것이다.
Contributor가 되기위한 조건은 아래와 같다.


나는 저번에 캐글 프로필을 생성했을 때, notebook을 Run시켜 보았기 때문에, 현재 상태는 아래와 같다.

체크가 되어있지 않은 3가지 항목은 오늘의 Assignment를 수행하며 해결해 볼것이다.

Step 3: Submit to Titanic

https://www.kaggle.com/alexisbcook/titanic-tutorial

 

Titanic Tutorial

Explore and run machine learning code with Kaggle Notebooks | Using data from Titanic - Machine Learning from Disaster

www.kaggle.com

가장 먼저 해볼 것은, 타이타닉에서 살아남을 승객을 예측하는 활동이다.
Data탭에서 data를 다운받고, 확인할 수 있다.
데이터에 대한 자세한 설명이 있고 데이터파일은 (train.csv, tes.csv, gender_submission.csv) 이다.
tarin.csv에서 찾은 패턴을 이용하여, test.csv에 있는 418명의 승객이 생존했는지에 대한 여부를 예측해야한다.

gender_submission.csv같은 경우에는 여성 승객은 모두 생존했고, 남성 승객은 모두 사망했다고 가정한 다음 어떤식으로 파일을 제출해야하는지에 대한 예시 파일이다.  

Code탭에서 New NoteBook을 생성하고, 노트북 이름을 바꿔줬다.

Notebook을 실행해주면, 아래와같이  3줄의 출력이 반환된다.

train_data = pd.read_csv("/kaggle/input/titanic/train.csv")
train_data.head()

위의 코드 두줄을 입력한 후 Run 해보자.

이와 같이 train.csv의 head를 볼 수 있다.

방금 작성한 코드는 파이썬 프로그래밍 언어로 되어 있다. Panda(약칭 pd)라고 하는 Python "module"을 사용하여 train.csv 파일에서 노트북으로 테이블을 로드한다. 이를 위해 파일 위치(/kaggle/input/titanic/train.csv)를 연결해야 했다.

 이 튜토리얼의 요점은 submission을 처음 제출하는 것이다. 이때 노트북에 최소 세 개의 코드 셀이 있어야 한다!!

test_data = pd.read_csv("/kaggle/input/titanic/test.csv")
test_data.head()

같은 방식으로 test.csv도 load해준다.

TItanic Tutorial의 목표는 "test.csv의 승객들이 살아남았는지 예측하는 것"임을 잊지 말자.
예측에 도움이 되는 패턴을 train.csv에서 찾아보자.

처음에는 패턴찾는 것이 버거울 수 있다. simple한것 부터 해보자.

아까 gender_submission.csv의 경우 모든 여성 승객이 생존했으며, 모든 남성승객은 사망했다고 가정했다.
이게 과연 합리적인 추측일까? 이패턴이 train.csv에서 참인지 확인해보자.

women = train_data.loc[train_data.Sex == 'female']["Survived"]
rate_women = sum(women)/len(women)

print("% of women who survived:", rate_women)

train.csv기준 탑승한 여성의 75%가 살아남았다.

men = train_data.loc[train_data.Sex == 'male']["Survived"]
rate_men = sum(men)/len(men)

print("% of men who survived:", rate_men)

train.csv기준 탑승한 남성의 19%만이 살아남았다.

성별이 생존을 나타내는 매우 강력한 지표이므로 gender_submission.csv의 제출파일은 나쁘지 않은 첫 번째 추측이다.

그러나, 결국 이렇게 성별에 기초한 제출은 하나의 column만을 기반으로 한다. 

여러 column(열)을 고려한다면 더 많은 정보를 이용한 예측을 할 수 있고, 더 복잡한 패턴을 발견 할 수 있다.
여러 열을 동시에 고려하는 것은 매우 어렵기 때문에, (또는 여러 열의 가능한 모든 패턴을 동시에 고려하는 데 오랜 시간이 걸릴 수 있기 때문에) machine_learning을 통해 자동화 할 것이다.

첫번째 machine_learning model은 Random forest이다.

Random forest model

(위 그림에는 세 그루의 나무가 있지만 100그루의 나무) 승객의 데이터를 개별적으로 고려하여 개인이 살아남았는지 여부를 투표한다. 그러면, 랜덤 포레스트 모델은 민주적인 결정을 내린다: 가장 많은 표를 얻은 결과가 선택된다.

아래의 코드 셀은 데이터의 서로다른 4개의 columns(("Pclass", "Sex", "SibSp" ,"Parch")에서 패턴을 찾는다.
train.csv 파일의 패턴을 기반으로 Random forest model의 tree를 구성한 후 test.csv에서 승객에 대한 예측을 생성한다.|
또한 이 코드는 이러한 새 예측을 csv파일 my_submission.scv에 저장한다.

from sklearn.ensemble import RandomForestClassifier

y = train_data["Survived"]

features = ["Pclass", "Sex", "SibSp", "Parch"]
X = pd.get_dummies(train_data[features])
X_test = pd.get_dummies(test_data[features])

model = RandomForestClassifier(n_estimators=100, max_depth=5, random_state=1)
model.fit(X, y)
predictions = model.predict(X_test)

output = pd.DataFrame({'PassengerId': test_data.PassengerId, 'Survived': predictions})
output.to_csv('my_submission.csv', index=False)
print("Your submission was successfully saved!")

그다음에는 이 notebook을 저장해 보겠다.

버튼을 누르면 팝업창이 뜨는데, Save & Run All (Commit) 옵션 체크를 했는지 확인한 후 "저장"버튼을 누근다.

그리고나서 submission 제출을 하면 된다!

My Submissions 탭에서 제출한 submission을 확인 할 수 있다.

여기까지 완료했으면, 추가적으로 아래의 링크를 통해 공부하면 좋다. 캐린이들에게 추천!!
If you're interested in learning more, we strongly suggest our (3-hour) 
Intro to Machine Learning course, which will help you fully understand all of the code that we've presented here. You'll also know enough to generate even better predictions!

 

Learn Intro to Machine Learning Tutorials

Learn the core ideas in machine learning, and build your first models.

www.kaggle.com

 

Step 4: Make a comment

Make a comment를 해야하는데, 처음 하는사람이라면, 일단 휴대폰번호 인증을 한번 해야한다!
휴대폰번호 인증을 간단히 마치고나서, 해당 proj의 Notebook에 대한 자신의 생각이나 질문을 comment하면 된다!

많은 캐린이들이 comment를 남겼는데 나도 한마디 남겨보았다!

Step 5: Give an upvote

마지막 5단계는 투표를 하는 것이다. 나는 쭉 읽어보다가 어느 한 아저씨의 도전을 응원하고 싶어져서 투표했다! 화이팅!

Step5까지 마치고 나면, 체크리스트가 자연스럽게 채워진다.

그러면 나의 프로필을 한번 확인해 볼까?

짠!! Kaggle 티어가 Contributor로 업그레이드 됐다!!
끝판왕 GrandMaster티어가 존재하지만, 우선은 열심히 경험을 쌓아서 Master 티어가 되는 것이 목표다! 
차근차근 공부해야겠다! 화이팅!!

차근차근 마스터티어를 향하여!!

Day1을 정리한 코드를 공유한다!
https://github.com/mgkim-developer/30-Days-of-ML-with-Kaggle/blob/main/30-days-of-ml-day-1.ipynb

 

GitHub - mgkim-developer/30-Days-of-ML-with-Kaggle: 30 Days of ML with Kaggle

30 Days of ML with Kaggle. Contribute to mgkim-developer/30-Days-of-ML-with-Kaggle development by creating an account on GitHub.

github.com

 

반응형