본문으로 바로가기

캐글(Kaggle) 타이타닉 생존자 예측하기 -3

category AI/ML 2020. 8. 22. 08:08
728x90

 

 

Classifier

 

지난 포스팅까지 전처리가 완료된 Train data 를 가지고 사이킷런에서 제공하는 Classifier 를 Train 시키고,

Test data 를 예측하는 것을 해볼 것입니다.

 

 

kNN : 최근접 이웃

라벨이 있는 데이터 속에서 라벨이 없는 데이터를 분류하며, 가까운 거리에 있는 k개의 이웃을 보고 빈도가 높은 것을 통해 분류합니다.

 

Validation  Train data 의 일부를 모델의 성능을 평가하기 위해서 사용합니다.

K-fold Cross Validation 은 Train data 를 k 로 나누고 각 라운드마다 나눈 Train data 를 한 번씩 Validation set 으로 사용하여 편견이 없는 Validation 결과가 나오게 됩니다.

 

from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
import numpy as np

k_fold = KFold(n_splits=10, shuffle=True, random_state=0)

clf = KNeighborsClassifier(n_neighbors = 13)
scoring = 'accuracy'
score = cross_val_score(clf, train_data, target, cv=k_fold, n_jobs=1, scoring=scoring)
round(np.mean(score)*100, 2)
82.6

 

 

Decision Tree : 의사결정 트리

전체 데이터에 스무고개하듯이 질문하며 분류하거나 예측합니다.

 

from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score

k_fold = KFold(n_splits=10, shuffle=True, random_state=0)

clf = DecisionTreeClassifier()
scoring = 'accuracy'
score = cross_val_score(clf, train_data, target, cv=k_fold, n_jobs=1, scoring=scoring)
round(np.mean(score)*100, 2)
79.8

 

 

Random Forest : 랜덤 포레스트

여러 개의 작은 의사결정 트리를 이용하여 빈도가 높은 것 예측합니다.

 

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
import numpy as np

k_fold = KFold(n_splits=10, shuffle=True, random_state=0)

clf = RandomForestClassifier(n_estimators=13)
scoring = 'accuracy'
score = cross_val_score(clf, train_data, target, cv=k_fold, n_jobs=1, scoring=scoring)
round(np.mean(score)*100, 2)
81.03

 

 

Naive Bayes : 나이브베이즈

나이브정리를 이용한 확률 분류기입니다.

 

from sklearn.naive_bayes import GaussianNB
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
import numpy as np

k_fold = KFold(n_splits=10, shuffle=True, random_state=0)

clf = GaussianNB()
scoring = 'accuracy'
score = cross_val_score(clf, train_data, target, cv=k_fold, n_jobs=1, scoring=scoring)
round(np.mean(score)*100, 2)
78.78

 

 

Support Vector Machine : 서포트 벡터 머신

분류를 위한 기준선을 정의하여 분류되지 않은 새로운 점에 대해 분류합니다.

 

from sklearn.svm import SVC
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
import numpy as np

k_fold = KFold(n_splits=10, shuffle=True, random_state=0)

clf = SVC()
scoring = 'accuracy'
score = cross_val_score(clf, train_data, target, cv=k_fold, n_jobs=1, scoring=scoring)
round(np.mean(score)*100, 2)
83.5

 

 

참고