Kaggle이란?
: 호주에서 시작한 국제적인 머신러닝 대회를 제공하는 서비스
Kaggle Code(Kaggle Kernel)
: 데이터 사이언스 관련 모듈이 모두 설치되어있는 Jupyter Python Notebook
- 무료
- 4 CPU, 16 GB 메모리, 1GB 디스크
- 여기서 만든 노트북을 다른 사람들과 공유 가능 + 다른 사람들이 만든 노트북을 보고 공부하기에 최적화
Kaggle Ranking
개인이 캐글에서 어떤 활동을 하느냐에 따라서 받게되는 레벨
- Novices : 캐글 커뮤니티 참여하면 기본적으로 부여
- Contributors
- Experts
- Masters
- Grandmasters
레벨이 각각 적용되는 분야가 크게 4개로 나뉘어진다.
- Competitions : 대회에서 어떤 성과를 거두었느냐에 따라
- Datasets : 캐글에 어떤 데이터셋을 제공했느냐에 따라
- Notebooks : 내가 작성한 노트북이 사람들에게 얼마나 좋은 반응을 얻었느냐
- Discussions : 데이터 분석, 머신러닝과 관련된 다양한 주제로 얼마나 활발하게 논의했느냐
Kaggle Competitions
목적
1. 참가자 관점에서의 목적
- 기술 습득
- 문제 해결
- 금전/경력 인센티브
2. 조직/회사 관점에서의 목적(Host a Competition)
- 혁신 장려
- 인재 발굴
- 벤치 마킹 : 해당 문제를 푸는 내부, 외부에서 해결했던 방법들을 비교하면서 다양한 방법으로 해결할 수 있음을 검증 + 방법별로 어느 정도 성과가 나오는지 비교
- 연구 기여
3. 캐글 관점에서의 목적
- 커뮤니티 구축
- 매출 증대
구성
- Overview : 대회에서 다루는 문제가 어떤 문제인지에 대한 정보(대회를 호스팅한 주체가 작성함)
- Data : 문제를 풀기 위한 데이터 셋 다운로드 및 데이터 셋의 특징 정보 확인 가능
- Code : 문제를 해결한 후 사람들이 작성한 코드 노트북을 업로드하는 공간(대회 진행중에는 거의 올라오지 X)
- Models : 문제를 해결하면서 만든 모델을 호스팅하고 싶은 경우 업로드 가능
- Discussion : 문제와 관련된 논의를 할 수 있는 공간
- Leaderboard : 대회에서 좋은 성적을 낸 참여자들의 정보(진행중인 대회에서는 지속적으로 업데이트됨)
- Rules : 대회에서 제약한 특정 규칙에 대한 설명
Kaggle API
: 캐글 노트북 등을 사용하지 않고 본인에게 익숙한 환경에서 모델링하고 싶은 경우,
Python으로 만들어진 `kaggle`이라는 모듈을 설치하면(`pip install kaggle`) 캐글 환경과 인터렉션 하면서
특정 대회의 데이터셋을 다운로드 받거나 결과물로 만들어진 나의 데이터셋을 제출하는 일이 가능해진다.
🔗 Kaggle API : https://www.kaggle.com/docs/api
기능
- Interacting with Competitions
- `kaggle competitions list` : 현재 존재하는 대회 리스트가 보여짐
- `kaggle competitions download -c [COMPETITION]` : 특정 대회의 데이터셋을 다운로드
- `[COMPETITION]` : 특정 대회의 ID
- `kaggle competitions submit -c [COMPETITION] -f [FILE] -m [MESSAGE]` : 결과물 파일을 제출
- `[FILE]` : 내가 만든 결과물 파일
- `[MESSAGE]` : 제출하면서 작성할 메세지
- Interacting with Datasets
- Interacting with Notebooks
Titanic 문제로 캐글 대회 연습해보기
🔗 실습 링크 : https://www.kaggle.com/competitions/titanic
1단계. 데이터 다운로드 및 대회 참여
위의 대회 링크로 접속해보자.
우선, 상단에 [Data] 탭에 들어가서 주어진 데이터 파일 3개를 모두 다운로드 받는다.
전부 다운 받았다면 상단에 [Code] 탭에 들어가서 [New Notebooke]을 눌러 결과물 작업을 위해 코드 작성을 시작해보자.
2단계. 코드 입력
먼저, 기본적으로 캐글 노트북에서 주어지는 아래의 코드를 실행시켜보자.
# This Python 3 environment comes with many helpful analytics libraries installed
# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python
# For example, here's several helpful packages to load
import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
# Input data files are available in the read-only "../input/" directory
# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory
import os
for dirname, _, filenames in os.walk('/kaggle/input'):
for filename in filenames:
print(os.path.join(dirname, filename))
# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using "Save & Run All"
# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session
훈련 데이터를 불러오자.
train_data = pd.read_csv("/kaggle/input/titanic/train.csv")
train_data.head()
테스트 데이터를 불러오자.
test_data = pd.read_csv("/kaggle/input/titanic/test.csv")
test_data.head()
제출용 샘플 파일을 열어보자.
gender_submission_data = pd.read_csv("/kaggle/input/titanic/gender_submission.csv")
gender_submission_data.head()
가장 기본적인 조건을 걸어서 분석을 수행해보자.
필자는 test_data 내 성별 컬럼값이 여성이면 생존(1), 남성이면 사망(0)이라는 조건을 걸어 Survived라는 새로운 컬럼을 생성했다.
## test_data 내 Sex(성별) 컬럼값이 여성이면 Survived(생존여부)가 1, 남성이면 0으로 설정
import numpy as np
test_data["Survived"] = np.where(test_data["Sex"] == 'female', 1, 0)
test_data.head()
새롭게 만든 Survived 컬럼과, 승객ID 컬럼으로 제출용 결과 데이터 프레임을 생성해보자.
# test_data 내 승객ID와 생존 여부만 담은 결과 데이터 프레임을 새로 생성
output = test_data[["PassengerId", "Survived"]]
output.head()
이를 csv파일로 저장해주었다.
# 새롭게 생성한 output 데이터프레임을 csv파일로 저장
output.to_csv('submission.csv', index=False)
기본적으로 캐글 노트북에서는 터미널 명령어를 실행할 수 있도록 하낟.
현재 디렉토리 내 파일이 있는지 확인해보았다.
# 현재 디렉토리 내 파일 확인
!ls -tl
해당 파일에 결과가 제대로 저장되었는지 5줄만 확인해보았다.
# 해당 파일의 처음 다섯줄만 확인
!head -5 submission.csv
3단계. 결과물 파일 다운받기
코드 작성을 완료했다면, 오른쪽에 [Output]에 있는 submission.csv 파일 옆에 점3개로 되어있는 버튼을 눌러보자.
파일을 다운로드 하기위해 [Download] 버튼을 클릭하자.
4단계. 결과물 제출
다시 대회 페이지로 돌아와서 [Submit Prediction]을 클릭해보자.
아까 저장한 결과물 csv 파일을 선택해서 아래 빨간 박스 안에 드래그 앤 드롭 해보자.
결과물 csv 파일이 제대로 업로드 되었다면 [Submit] 버튼을 눌러 결과를 제출하면 된다.
5단계. Dicussion 해보기
대회와 관련된 논의를 하기 위해서는 상단에 [Discussion]탭으로 들어가 [New Topic] 버튼을 클릭한다.
캐글은 한 사람이 다수의 계정을 운영하는 것을 금지하고 있기 때문에,
Discussion을 진행하기 위해서는 그 전에 전화번호 인증을 수행해야한다.
본인의 전화번호를 입력하고 인증 번호를 받았다면 해당 인증번호까지 입력한 후 인증을 완료해보자.
제대로 인증되었다면 아래와 같은 화면이 뜰 것이다.