상세 컨텐츠

본문 제목

캐글 Kaggle Titanic ML from Disaster 도전기: 코드 분석 (ChatGPT Code Interpreter 플러그인)

Keep Up WIth AI Revolution

by 달의 언어 2023. 7. 16. 21:26

본문

 

 

데이터를 좀 다루는 친구가 캐글(Kaggle)을 소개해 주어서 첫 번째 미션을 튜토리얼에 따라 참여해 보았습니다. 

코드를 제출하고, 제출한 코드를 ChatGPT Code Interpreter에 넣고 line by line 설명을 요청하였습니다. 

Code Interpreter의 성능을 시험하면서 동시에 데이터 과학 공부를 병행할 수 있는 좋은 아이디어라고 생각해서 글을 남기게 되었습니다. 

 

https://www.kaggle.com/competitions/titanic

 

Titanic - Machine Learning from Disaster | Kaggle

 

www.kaggle.com

 

# 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

 

설명:

이 파이썬 3 환경에는 많은 유용한 분석 라이브러리가 설치되어 있습니다.
numpy와 pandas라는 라이브러리를 import하고 있습니다. numpy는 선형 대수 계산을 위한 라이브러리이며, pandas는 데이터 처리 및 CSV 파일 입출력을 지원하는 라이브러리입니다.
os 라이브러리를 사용하여 '/kaggle/input' 디렉토리를 탐색하고 그 안에 있는 모든 파일의 이름을 출력합니다.

<1번 코드셀>

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

설명:

pandas의 read_csv 함수를 사용하여 Titanic 데이터셋의 train.csv 파일을 읽어와 train_data라는 DataFrame으로 저장합니다. head() 함수는 이 데이터프레임의 상위 5개 행을 출력합니다.

 

<2번 코드셀>

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

설명:

train 데이터와 마찬가지로 test 데이터도 읽어와 test_data라는 DataFrame으로 저장합니다.
head() 함수를 사용하여 test_data의 상위 5개 행을 출력합니다.

<3번 코드셀>

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

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

설명:

'Sex' 칼럼이 'female'인 행만 선택하고, 그 중 'Survived' 칼럼만 선택하여 women이라는 변수에 저장합니다.
이후, sum()과 len() 함수를 사용하여 생존한 여성의 비율을 계산하고 이를 출력합니다.

<4번 코드셀>

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

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

설명:

이전 셀과 비슷하게, 'Sex' 칼럼이 'male'인 행만 선택하고, 그 중 'Survived' 칼럼만 선택하여 men이라는 변수에 저장합니다. 마찬가지로 sum()과 len() 함수를 사용하여 생존한 남성의 비율을 계산하고 이를 출력합니다.

 

<5번 코드셀>

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('submission.csv', index=False)
print("Your submission was successfully saved!")

설명:

sklearn.ensemble에서 RandomForestClassifier를 import합니다. 이는 머신러닝 모델 중 하나인 랜덤 포레스트 분류기를 사용하기 위함입니다.
"Survived" 칼럼을 y로 설정합니다. 이는 우리가 예측하려는 목표 변수(target variable)입니다.
"Pclass", "Sex", "SibSp", "Parch" 칼럼을 특성(features)으로 선택합니다. 이 칼럼들의 데이터를 사용하여 생존 여부를 예측하게 됩니다.
pd.get_dummies 함수를 사용하여 이들 카테고리형 특성을 수치형으로 변환합니다.
RandomForestClassifier 모델을 초기화하고, fit 함수를 사용하여 모델을 훈련 데이터에 적합시킵니다.
이후 predict 함수를 사용하여 테스트 데이터에 대한 예측을 수행합니다.
마지막으로, 예측 결과와 PassengerId를 데이터프레임으로 만들고 이를 csv 파일로 저장합니다. 이 파일이 Kaggle에 제출할 파일입니다.

 

솔직히 말하자면, 

미션을 이해해서 이 과정을 끝낸 것이 아니라 아주 상세한 튜토리얼을 따라했을 뿐입니다.

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

 

Titanic Tutorial

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

www.kaggle.com

 

하지만, 이 과정에서 데이터셋을 어떻게 처리하는지에 대한 대략적인 감(?)을 얻은 것 같습니다. 

실제로 해보는 것보다 더 훌륭한 학습은 없는 것 같습니다. 

함께 캐글에 도전해 보면 어떨까요?

 

#Kaggle
#DataScience
#MachineLearning
#TitanicDataset
#GettingStartedOnKaggle
#DataCompetition
#PredictiveModeling
#RandomForest
#PythonCoding
#Pandas
#Numpy
#KaggleTutorial
#DataAnalysis
#DataVisualisation
#LearnDataScience
#DataScienceCommunity
#FirstKaggleCompetition
#DataScienceBeginner
#DataScientists
#DataDriven

관련글 더보기

댓글 영역