Kaggle์ ์๋ "Titanic: Machine Learning from Disaster" ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์ด๋ค ์ข ๋ฅ์ ์ฌ๋๋ค์ด ์ด์๋จ๋์ง ์์ธกํ๊ธฐ
์ด ํ๋ก์ ํธ๋ Ubuntu 18.04LTS
ํ๊ฒฝ์์ ์ ์ํ์ต๋๋ค.
- Requirement
- Installation
- Experiments
$ conda create -n titanic python=3.7 scikit-learn pandas jupyter
$ conda activate titanic
$ conda list
- Anaconda ํ๊ฒฝ์์ ์์
ํ๊ธฐ ์ํด titanic์ด๋ผ๋ ์๋ก์ด Environment๋ฅผ ์์ฑ
- ์์ฑ๊ณผ ๋์์
Python 3.7
scikit-learn
pandas
jupyter
๋ฅผ ์ค์น
- ์์ฑ๊ณผ ๋์์
conda activate titanic
์ผ๋ก titanic Environment๋ฅผ ํ์ฑํconda list
๋ก Package๋ค์ด ์ ๊น๋ ธ๋์ง ํ์ธ
๋จผ์ ์ด ํ๋ก์ ํธ๋ฅผ ์งํํ๊ณ ์ ์ฅํ Github repository๋ฅผ ์์ฑํ๋ค.
ํ์๊ฐ์
- ์ฐ์ธก์๋จ ํ๋กํ ์ฌ์ง - Your repositories - new
๋ฅผ ๋๋ฅธ๋ค์ Repository name
์ ์ค์ ํ๊ณ , Repository๋ฅผ Public
์ผ๋ก ํ ์ง, Private
๋ก ํ ์ง ์ ํํ ๋ค์ Create repository
๋ฅผ ๋๋ฅด๋ฉด ์ฝ๊ฒ ์์ฑ๋๋ค.
๋๋ titanic
์ด๋ผ๋ ์ด๋ฆ์ผ๋ก Private repository
๋ฅผ ๋ง๋ค์๋ค.
๊ทธ ๋ค์์๋ ํฐ๋ฏธ๋ ํ๊ฒฝ์์ Git์ ์ฌ์ฉํ ์ ์๋๋ก ๋ค์ด๋ก๋ํ๋ค.
$ sudo apt install git
$ git --version
- Ubuntu์์์ git ๋ค์ด๋ก๋๋ ์์ฒญ ๊ฐ๋จํ๋ค.
- ๋ค์ด๋ก๋๊ฐ ์๋ฃ๋๋ฉด
git --verison
์ผ๋ก ์ ๊น๋ ธ๋์ง์ ๋ฒ์ ์ ๋ณด๋ฅผ ํ์ธํ๋ค.
๋ค์ ๋ด repository
๋ก ๋์๊ฐ์ clone
์ด๋ผ๋ ์ด๋ก์ ๋ฒํผ์ ๋๋ฅด๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฐฝ์ด ๋์จ๋ค.
์ ๊ธฐ์ ๋นจ๊ฐ์ ์ค์ณ์ง ๋ถ๋ถ์ ๋๋ฅด๋ฉด ๋ด Repository
์ web URL์ด ๋ณต์ฌ๊ฐ ๋๋ค.
๋ค์ ํฐ๋ฏธ๋ ํ๊ฒฝ์ผ๋ก ๋์๊ฐ์ ์๋์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ค.
$ git clone https://github.com/Kojungbeom/titanic.git
$ cd titanic
git clone
๋ช ๋ น๊ณผ Github repository์ web URL์ ์ฌ์ฉํ๋ฉด ๊ทธRepository
์ ์ด๋ฆ๊ณผ ๊ฐ์ ํด๋๊ฐ ์๊ธฐ๊ณ , ํด๋นRepository
์ ๋ฐ์ดํฐ๋ค์ด ๋ค์ด๋ก๋๋๋ค.
$ pip install kaggle
-
pip install kaggle
๋ก kaggle ๋ค์ด๋ก๋๋ฅผ ํ๋ค.โ
- kaggle ํํ์ด์ง - ํ์๊ฐ์ - ๋ก๊ทธ์ธ - ์ฐ์ธก์๋จ ํ๋กํ ์ด๋ฏธ์ง ํด๋ฆญ - My Account
Create New API Token
์ ํด๋ฆญํ๊ณ kaggle.json์ ๋ค์ด๋ก๋ ๋ฐ์ ํ์, /home/ines
์๋ .kaggle
์ด๋ผ๋ ์ด๋ฆ์ ํด๋๋ฅผ ๋ง๋ ํ, ๋ค์ด๋ก๋ ๋ฐ์ kaggle.jsonํ์ผ์ ๋ฃ๋๋ค.
$ chmod 600 "path to kaggle.json"
$ kaggle competitions list
# Home ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ๋ค.
$ cd
$ cd titanic
$ kaggle competitions download -c titanic
- ํฐ๋ฏธ๋์์
./kaggle
์ ๋ค์ด๊ฐ ๋ค,chmod 600
์ผ๋กkaggle.json
์ ์ฝ๊ธฐ, ์ฐ๊ธฐ ๊ถํ์ ๋ถ์ฌํ๋ค. (์์ธํ ๋ด์ฉ์ ์ด ๋ธ๋ก๊ทธ์ ์ฐธ๊ณ ) kaggle competitions list
๋ฅผ ์ ๋ ฅํ์ฌ ์ ๋์ค๋์ง ํ์ธ- ๋ด Github repository ํด๋ ์์ titanic dataset์ ๋ค์ด๋ฐ์๋ค.
- ์์ถํ์ด์ฃผ๊ณ
.zip
ํ์ผ์ ์ญ์ ํ๋ค. Repository
์ด๋ฆํ๊ณ ์์ถ์ด ํ์ด์ง ํด๋ํ๊ณ ์ด๋ฆ์ด ๋๊ฐ์ผ๋ ํผ๋์ด ์๋๋ก ํด๋์ด๋ฆ์dataset
์ผ๋ก ๋ฐ๊พผ๋ค.
์์์ ๋ง๋ค์๋ home directory
์ clone
ํด๋จ๋ ํด๋ titanic
์ src
๋ผ๋ ํด๋๋ฅผ ๋ง๋ค๊ณ jupyter notebook
์ ์คํํ๋ค.
$ cd titanic
$ mkdir src
$ jupyter notebook
๋ค์๊ณผ ๊ฐ์ ์น์ฌ์ดํธ๊ฐ ์ด๋ฆฌ๋ฉด ์ฑ๊ณต
src
ํด๋๋ก ๋ค์ด๊ฐ์ ์๋ก์ด jupyter notebook
ํ์ผ์ ๋ง๋ ๋ค.
Tip) jupyter notebook
์ ๊ฐ๋ฐํ๊ธฐ ์ข์ ํ๊ฒฝ์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์, ๋ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๋จ์ถํค๋ฅผ ์ตํ๋ ๊ฒ์ ์ถ์ฒํ๋ค! ์ฐธ๊ณ ํ ๋ธ๋ก๊ทธ
์ ์ด์ ์ ๋ง ์์์ด๋ค.
์ฐ์ ์ฒ์์๋ ์ฌ์ฉํ library
๋ฅผ import
ํด์ฃผ๋๊ฒ ์ผ๋ฐ์ ์ด๋ค.
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
numpy
๋Train
๊ณผTest
,Predict
๋ฅผ ํ๊ธฐ์ํด ๋ฐ์ดํฐ๋ฅผArray type
์ผ๋ก ๋ง๋ค์ด์ค ๋ ์์ด๋ค.pandas
๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ๊ฐ๋จํ๊ฒ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ ์์ด๋ค.matplotlib
๋ ๋ฐ์ดํฐ๋ฅผ ์๊ฐํํ๊ธฐ์ํ ๋ ์์ด๋ค.
์ฐ์ ์ด ์ธ๊ฐ์ง๋ง import
ํด๋์๋ค. ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด์ ๋ชจ๋ธ์ ํ์ตํ ์ง ์๊ฐํ๊ธฐ์ ์์ ๋ฐ์ดํฐ ํ์
์ด ์ ํ๋์ด์ผํ๋ค.
train_data = pd.read_csv("path to train.csv")
test_data = pd.read_csv("path to test.csv")
train_data.head()
train_data.info()
test_data.info()
train_data.describe()
def makeTitle(data):
data['Title'] = data['Name'].str.extract(' ([A-Za-z]+)\.', expand = False)
makeTitle(test_data)
makeTitle(train_data)
์ด๋ฆ์ ๋ถ์ด์๋ Mr
, Mrs
๊ฐ์ ์์์ด๋ฅผ ์ถ์ถํด์ Title
์ด๋ผ๋ ์๋ก์ด Column์ Training data์ test_data์ ๋ง๋ค์๋ค. value_counts()
๋ก ํ์ธํ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์๋ค.
๋ค์์๋ Train_data
์๋ง ์๋ Survived
column์ drop
์ํค๊ณ test_data
์ ๊ฒฐํฉ์์ผ์ ๊ฐ์ด ๊ฐ๊ณตํ๋ค.
# ๋ฐ์ดํฐ ํฉ์ณ์ ๊ฐ๊ณตํ๊ธฐ
all_data = pd.concat([train_data, test_data], axis=0)
all_data.info()
์ ์ ๋ณด์ ๋ฐ๋ฅด๋ฉด Age
, Fare
, Embark
, Cabin
์์ ๊ฒฐ์ธก๊ฐ์ด ์๋ค!
# ๊ฒฐ์ธก๊ฐ์ ์ฑ์ฐ๊ธฐ์ํ ํ๊ท ๊ฐ ์ค๋น
mr_mean = all_data[train_data['Title'] == 'Mr']['Age'].mean()
miss_mean = all_data[train_data['Title'] == 'Miss']['Age'].mean()
mrs_mean = all_data[train_data['Title'] == 'Mrs']['Age'].mean()
master_mean = all_data[train_data['Title'] == 'Master']['Age'].mean()
dr_mean = all_data[train_data['Title'] == 'Dr']['Age'].mean()
rev_mean = all_data[train_data['Title'] == 'Rev']['Age'].mean()
major_mean = all_data[train_data['Title'] == 'Major']['Age'].mean()
mlle_mean = all_data[train_data['Title'] == 'Mlle']['Age'].mean()
col_mean = all_data[train_data['Title'] == 'Col']['Age'].mean()
age_mean = all_data['Age'].mean()
Age
์ด์ ๋น์ด์๋๊ณณ์ ์ด๋ป๊ฒ ์ฑ์์ค๊น ํ๋ค๊ฐ, ๋ง๋ค์ด๋ธ Title
data๋ฅผ ๊ฐ์ง๊ณ ๊ฐ Title
์ ๋์ด์ ํ๊ท ์ผ๋ก ๋ฃ์ด์ฃผ๋๊ฒ ์ข๊ฒ ๋ค๊ณ ์๊ฐํ์ฌ, ์กด์ฌํ๋ Age
๋ฐ์ดํฐ๋ฅผ ์ด์ฉํด์ ๊ฐ๊ฐ์ ํ๊ท ์ ๊ตฌํด๋๋ค. ํ๋๋ฐ์ ์๋ Title
ํญ๋ชฉ์ ๋ํด์๋ ๊ตณ์ด ํ๊ท ์ ๋ง๋ค์ง ์์๋ค.
all_array_data = np.array(all_data)
# NaN๊ฐ์ ์ด๋ ๊ฒ ์ ๊ทผํด์ผ ํ๋ค๊ณ ํ๋ค.
for data in all_array_data:
if np.isnan(data[4]):
if data[11] == 'Mr':
data[4] = round(mr_mean)
#print("OK")
elif data[11] == 'Miss':
data[4] = round(miss_mean)
#print("OK")
elif data[11] == 'Mrs':
data[4] = round(mrs_mean)
#print("OK")
elif data[11] == 'Master':
data[4] = round(master_mean)
#print("OK")
elif data[11] == 'Dr':
data[4] = round(dr_mean)
#print("OK")
elif data[11] == 'Rev':
data[4] = round(rev_mean)
#print("OK")
elif data[11] == 'Major':
data[4] = round(major_mean)
#print("OK")
elif data[11] == 'Mlle':
data[4] = round(mlle_mean)
#print("OK")
elif data[11] == 'Col':
data[4] = round(col_mean)
#print("OK")
else:
data[4] = round(age_mean)
#print("OK")
array๋ก ๋ฐ๊ฟ์ ์ฒ๋ฆฌํ๊ณ ๋๋๊น column name
์ด ๋ค ์์ด์ ธ์ ๋ค์ ์ ์ํด์ฃผ๊ณ , ์๋ก์ด ๋ฐ์ดํฐํ๋ ์์ ๋ง๋ค์๋ค.
column_list = ['PassengerId', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp', 'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked', 'Title']
new_all_data = pd.DataFrame(all_array_data, columns=column_list)
# ๋๋จธ์ง ๋จ์์๋ ๊ฒฐ์ธก๊ฐ์ ๊ฒฐ์ธก๊ฐ ์์น์ ๋ฐ๋ก ์์ ๊ฐ์ผ๋ก ๊ฒฐ์ธก๊ฐ์ ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ผ๋ก!
new_all_data['Embarked'] = new_all_data['Embarked'].fillna(method='pad')
new_all_data['Fare'] = new_all_data['Fare'].fillna(method='pad')
# ์ ๋ถ ์ฑ์์ง๊ฑธ ํ์ธ
new_all_data.info()
์์ ๋ณด์ด๋ ๊ฒ ์ฒ๋ผ ๊ฒฐ์ธก๊ฐ๋ค์ ์ ๋ถ ์์ด์ก๋ค.
์ด์ Training
์ ์ฌ์ฉํ ๋ฐ์ดํฐ๋ฅผ ๋งคํํ๊ณ , ๋๋จธ์ง๋ drop
์ํค๋ ์์
์ด ํ์ํ๋ค
# ์ฐ๋ น๋ ๋ณ๋ก ๋๋๊ธฐ
for data in [new_all_data]:
data.loc[data['Age'] <= 10, 'Age'] = 0,
data.loc[(data['Age'] > 10) & (data['Age'] <= 20), 'Age'] = 1,
data.loc[(data['Age'] > 20) & (data['Age'] <= 30), 'Age'] = 2,
data.loc[(data['Age'] > 30) & (data['Age'] <= 40), 'Age'] = 3,
data.loc[(data['Age'] > 40) & (data['Age'] <= 50), 'Age'] = 4,
data.loc[(data['Age'] > 50) & (data['Age'] <= 60), 'Age'] = 5,
data.loc[(data['Age'] > 60) & (data['Age'] <= 70), 'Age'] = 6,
data.loc[data['Age'] > 70, 'Age'] = 7
Age
๋ ์ฐ๋ น๋๋ณ๋ก Interval์ ์ฃผ์ด ๋๋์๋ค.
# ํด๋์ค๋ณ Fare์ ํ๊ท ๊ฐ์ ์ด์ฉํด์ ๊ฒฝ๊ณ๋ง๋ค์ด์ ๋งคํ
p1 = new_all_data[new_all_data['Pclass']==1]
p2 = new_all_data[new_all_data['Pclass']==2]
p3 = new_all_data[new_all_data['Pclass']==3]
p1_mean = p1['Fare'].mean()
p2_mean = p2['Fare'].mean()
p3_mean = p3['Fare'].mean()
r1 = (p2_mean - p3_mean) / 2
r2 = (p1_mean - p2_mean) / 2
for data in [new_all_data]:
data.loc[data['Fare'] <= p3_mean+r1, 'Fare'] = 0,
data.loc[(data['Fare'] > p3_mean+r1) & (data['Fare'] <= p2_mean+r2), 'Fare'] = 1,
data.loc[data['Fare'] > p2_mean+r2, 'Fare'] = 2
Fare
๋ ๊ฐ๊ฐPclass
์ ์ฐ๊ด์ฑ์ ๊ฐ์ง๊ณ ์์ด์ ๊ฐPclass
์์Fare
์ ํ๊ท ๊ฐ์ ๊ตฌํด์ Interval์ ๋๋๋ ์ฉ๋๋ก ์ฌ์ฉํ์๋ค.
# ์ฑ๋ณ ๋งคํ
for data in [new_all_data]:
data.loc[data['Sex'] == 'male', 'Sex'] = 0,
data.loc[data['Sex'] == 'female', 'Sex'] = 1
Sex
์ ๊ฐ๋จํ๊ฒ 0๊ณผ 1๋ก ๋๋ ์ฃผ์๋ค.
# Embarked ๋งคํ
for data in [new_all_data]:
data.loc[data['Embarked'] == 'S', 'Embarked'] = 0,
data.loc[data['Embarked'] == 'C', 'Embarked'] = 1,
data.loc[data['Embarked'] == 'Q', 'Embarked'] = 2
Embarked
๋ ๊ฐ๋จํ๊ฒ 3๊ฐ๋ก ๋๋ ์ฃผ์๋ค.
# ํ์ดํ์ ๋งคํ, ๊ฐ์๊ฐ ์์ Title๋ค์ ๋๋จธ์ง์ ๋ฌถ์ด์ ์ฒ๋ฆฌ
for data in [new_all_data]:
data.loc[data['Title'] == 'Mr', 'Title'] = 0,
data.loc[data['Title'] == 'Miss', 'Title'] = 1,
data.loc[data['Title'] == 'Mrs', 'Title'] = 2
data.loc[data['Title'] == 'Master', 'Title'] = 3,
data.loc[data['Title'] == 'Dr', 'Title'] = 4,
data.loc[data['Title'] == 'Rev', 'Title'] = 4,
data.loc[data['Title'] == 'Col', 'Title'] = 4,
data.loc[data['Title'] == 'Major', 'Title'] = 4,
data.loc[data['Title'] == 'Sir', 'Title'] = 4,
data.loc[data['Title'] == 'Countess', 'Title'] = 4,
data.loc[data['Title'] == 'Don', 'Title'] = 4,
data.loc[data['Title'] == 'Jonkheer', 'Title'] = 4,
data.loc[data['Title'] == 'Lady', 'Title'] = 4,
data.loc[data['Title'] == 'Ms', 'Title'] = 4,
data.loc[data['Title'] == 'Capt', 'Title'] = 4,
data.loc[data['Title'] == 'Mme', 'Title'] = 4
data.loc[data['Title'] == 'Mlle', 'Title'] = 4
data.loc[data['Title'] == 'Dona', 'Title'] = 4
- ์ฒ์์ ๋ง๋ค์๋
Title
๊ฐ์ ๊ฒฝ์ฐ๋ ๊ฐ์ด ๋ง์ ๊ฒ๋ค์ ๋จ๋ ์ผ๋ก ๋งคํํ๊ณ , ๋๋จธ์ง ๊ฐ์ด ์ ์ ๊ฒ๋ค์ ๋ฌถ์ด์ ํ๋์ Class๋ก ์ฒ๋ฆฌํ์๋ค.
new_all_data.head()
์ด์ Training์ ์ฌ์ฉ๋์ง ์์ Feature๋ค์ ์ ๊ฑฐํ๋ค.
# ๋งคํ์ ๋ง์ณค์ผ๋ ๋๋จธ์ง ๋ชป์ธ๊ฒ๊ฐ์ ๋ฐ์ดํฐ๋ค์ ๋ค ๋ฒ๋ฆฐ๋ค.
drop_list = ['Ticket', 'SibSp', 'Parch', 'Name', 'Cabin', 'PassengerId']
# ์๊น ๋ฌถ์ด๋จ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ๋ถ๋ฆฌํ๋ค.
final_train_data = new_all_data[new_all_data['PassengerId']<=891]
final_test_data = new_all_data[new_all_data['PassengerId']>891]
final_train_data = final_train_data.drop(drop_list, axis=1)
final_test_data = final_test_data.drop(drop_list, axis=1)
final_train_data.info()
final_test_data.info()
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.svm import SVC
์ด๋ค ๋ชจ๋ธ์ ์ธ๊นํ๋ค๊ฐ ์ฌ๋ฌ๊ฐ์ง๋ฅผ ์จ๋ณด๊ณ ์ฑ๋ฅ์ ๋น๊ตํ ํ, ๊ฐ์ฅ ์ข์ Model๋ก ์ฌ์ฉํ๊ธฐ๋ก ํ๋ค.
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import KFold
param_grid = {
'n_estimators': [200, 300, 400, 500],
'max_depth': [6, 20, 30, 40],
'min_samples_leaf' : [3,5,7,10],
'min_samples_split' : [2,3,5,10]
}
kf = KFold(random_state=42,
n_splits=10,
shuffle=True,
)
rf_grid = GridSearchCV(rf_clf2, param_grid=param_grid, scoring='accuracy')
rf_grid.fit(final_train_data, label)
rf_grid.best_params_
svm_clf = SVC()
param_svm_grid = {
'degree': [1, 10, 20, 30],
'C' : [0.1, 10, 20, 30, 40, 70, 100]
}
svm_grid = GridSearchCV(svm_clf, param_grid=param_svm_grid, scoring='accuracy')
svm_grid.fit(final_train_data, label)
svm_grid.best_params_
gbrt = GradientBoostingClassifier(random_state=42)
param_gbrt_grid = {
'n_estimators': [100, 200, 300],
'max_depth': [5, 10, 15, 20],
'min_samples_leaf' : [3,5,7,9],
'min_samples_split' : [2,4,6,8],
'learning_rate' : [0.1, 1]
}
gbrt_grid = GridSearchCV(gbrt, param_grid=param_gbrt_grid, scoring='accuracy')
gbrt_grid.fit(final_train_data, label)
gbrt_grid.best_params_
- ํ์ตํ๊ธฐ์ Random Forest์์ ์ด ๋ฐ์ดํฐ์ ์ ๋ํ ์ต์ ์ Hyperparameter๋ฅผ ์ฐพ๊ธฐ์ํด GridSearch๋ฅผ ์ฌ์ฉํ๋ค.
label_data = pd.read_csv("path to test.csv")
label = label_data['Survived']
knn_clf = KNeighborsClassifier(n_neighbors = 8)
score = cross_val_score(knn_clf, final_train_data, label, cv=5, scoring='accuracy')
print(score)
# GridSearch ๊ฒฐ๊ณผ๋ฅผ ํ ๋๋ก Hyperparameter ์
๋ ฅ
rf_clf = RandomForestClassifier(n_estimators=400, max_depth=20, max_leaf_nodes=5, min_samples_split=2)
score = cross_val_score(rf_clf, final_train_data, label, cv=5, scoring='accuracy')
print(score)
# GridSearch ๊ฒฐ๊ณผ๋ฅผ ํ ๋๋ก Hyperparameter ์
๋ ฅ
gbrt = GradientBoostingClassifier(learning_rate=0.1, max_depth=5, min_samples_leaf=9, min_samples_split=2, n_estimators=100)
gbrt.fit(final_train_data, label)
gbrt.score(final_train_data, label)
# GridSearch ๊ฒฐ๊ณผ๋ฅผ ํ ๋๋ก Hyperparameter ์
๋ ฅ
svm_clf = SVC(C=10, degree=1)
score = cross_val_score(svm_clf, final_train_data, label, cv=5, scoring='accuracy')
print(score)
- label์ ์์ฑํด์ฃผ๊ณ , ๋ชจ๋ธ๋ค์
Cross_val_score
์ ์ด์ฉํด์ ์ฑ๋ฅ์ ํ๊ฐํ๋ค.
๊ฐ๊ฐ์ ๋ชจ๋ธ์ด ๋ฐ์ ์ ์๋ ๋ค์๊ณผ ๊ฐ์๋ค.
KNN
[0.81005587 0.78651685 0.76404494 0.78651685 0.80898876]
Random Forest
[0.81564246 0.80337079 0.79775281 0.79213483 0.80337079]
GradientBoostingClassifier
[0.8529741863075196]
SVM
[0.82681564 0.82022472 0.83146067 0.78651685 0.86516854]
svm๊ณผ Random Forest, GradientBoosting ๊ฐ๊ฐ์ ๋ํ ํ์ผ์ ๋ง๋ค์ด์ ์ฌ๋ฌ๋ฒ ์ ์ถํด๋ณด์๋ค.
svm_clf.fit(final_train_data, label)
predictions = svm_clf.predict(final_test_data)
์ด์ ๋ง๋ค์ด์ง Prediction์ผ๋ก ์ ์ถ์ฉ ํ์ผ submission.csv
, submission_rf.csv
, submission_gbf
๋ฅผ ๋ง๋ ๋ค.
submission = pd.DataFrame({"PassengerId" : test_data['PassengerId'],
"Survived" : predictions})
submission.to_csv('submission.csv', index=False)
submission = pd.read_csv('submission.csv')
submission.head()
rf_clf.fit(final_train_data, label)
predictions_rf = rf_clf.predict(final_test_data)
submission_rf = pd.DataFrame({"PassengerId" : test_data['PassengerId'],
"Survived" : predictions_rf})
submission_rf.to_csv('submission_rf.csv', index=False)
submission_rf = pd.read_csv('submission_rf.csv')
submission_rf.head()
gbrt.fit(final_train_data, label)
predictions_gbf = gbrt.predict(final_test_data)
submission_gbf = pd.DataFrame({"PassengerId" : test_data['PassengerId'],
"Survived" : predictions_gbf})
submission_gbf.to_csv('submission_gbf.csv', index=False)
submission_gbf = pd.read_csv('submission_gbf.csv')
submission_gbf.head()
์์ ์ฝ๋๋ฅผ ์คํํ๋ฉด ์์ ์ ์ฝ๋๊ฐ ์๋ ํด๋์ submission.csv
๊ฐ ๋ง๋ค์ด์ง๊ฑธ ํ์ธํ ์ ์๋ค!
- ์ฌ๊ธฐ์์
Submit Predictions
ํด๋ฆญํ ๋ค, ํ์ผ์ ์ฌ๋ฆฌ๊ณ ,Make Submission
์ ํด๋ฆญํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ ์๋ฅผ ๋ณผ ์๊ฐ ์๋ค.
์ธ๊ฐ์ง๋ฅผ ์ ๋ถ ์ฌ๋ ค ํ ์คํธ๋ฅผ ํด๋ณธ ๊ฒฐ๊ณผ, ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์๋ค.
Gradient Boosting Score
-> 0.75598
Random Forest Score
-> 0.7751
SVM Score
-> 0.78468