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
참고
'AI > ML' 카테고리의 다른 글
캐글(Kaggle) 자전거 수요 예측 -1 (0) | 2020.08.23 |
---|---|
캐글(Kaggle) 타이타닉 생존자 예측하기 -2 (0) | 2020.08.22 |
캐글(Kaggle) 타이타닉 생존자 예측하기 -1 (0) | 2020.08.22 |