Machine Learning/파이썬_데이터사이언스

5. Spot-Check Classification Algorithm [파이썬으로 배우는 데이터 사이언스]

Minwoo 2020. 2. 3.

Data-Learning.tistory.com - 머신러닝 오픈소스 무료 강좌


 

 

 

Spot-Check Classification Algorithm

 

 

Contents: 

 

1. Spot-Checking

2. 분류 알고리즘 

  · linear 모델 분류 알고리즘 

  · non-linear 모델 분류 알고리즘 

 

 


 

1. Spot-Checking 

 

 

  • 스팟 체킹 이란 머신 러닝 문제를 풀 때, 문제 / 데이터 에 맞는 좋은 결과를 내는 알고리즘을 찾아가는 과정이다. 
  • trial & error. 괜찮은 모델들 선택 후 하이퍼 파라미터 튜닝 -> 알맞은 알고리즘 선택 
  • try Mixture of algorithm representation; (e.g. instances / trees) 
  • try Mixture of learning algorithm; (e.g. different algorithms for learning the same type of representation) 
  • try Mixture of algorithm modeling types; (e.g. linear / nonlinear functions or parametric / non parametric) 

 

 

 


 

2. 분류 알고리즘 

 

1) Linear Models 

* Logistic Regression 

        · 가우시안 분포를 가정하고 바이너리 분류 문제에 사용된다. 

 

* Linear Discriminant Analysis(LDA) 

        · 가우시안 분포를 가정하고 바이너리 / 멀티클래스 분류에 사용된다. 

 

 

from sklearn.model_selection import KFold, cross_val_score 
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis 
kfold=KFold(n_splits=10,random_state=6) 
model=LinearDiscriminantAnalysis() 
results=cross_val_score(model,X,y,cv=kfold) 
print(results.mean()) 

 


 

 

 

2) Non Linear Models 

* K-Nearest Neighbors 

      · 거리 측정을 통하여 새로운 인스턴스에 대하여 k 개의 가장 가까운 인스턴스를 찾고

        k개의 값들의 평균값을 output으로 낸다. 

 

from sklearn.model_selection import KFold,cross_val_score 
from sklearn.neighbors import KNeighborsClassifier 
model=KNeighborsClassifier() 
kfold=KFold(n_splits=10,random_state=6) 
results=cross_val_scroe(model,X,y,cv=kfold) 
print(results.mean()) 

 


* Naïve Bayes 

      · 네이브 베이즈는 각각의 클래스(레이블)에 대한 확률과, 각각의

        input(feature)주어졌을 때, 클래스(레이블)의 확률

        (=conditional probability; p(class | each input feature)를 계산한다. 

 

      · 새로운 input이 들어오면 위를 바탕으로 각각의 input feature에 대한

        조건부 확률들을 곱하여 예상되는 확률을 구한다.

        이 때, 모두 독립적인 관계라 가정한다. 

 

      · 가우시안 분포를 따른다 가정하고 Gaussian Probability Density Function

        사용하여, 새로운 input feature 들에 대한 확률을 쉽게 구할 수 있다. 

 

from sklearn.model_selection import KFold,cross_val_score 
from sklearn.naïve_bayes import GaussianNB 
model=GaussianNB() 
kfold=KFold(n_splits=10,random_state=6) 
results=cross_val_scroe(model,X,y,cv=kfold) 
print(results.mean()) 

 


 

* Classification and Regression Trees(CART) 

      · CART는 트레이닝 데이터로부터 바이너리 트리를 만든다. 

      · 트리기반 모델의 특징인 split을 greedy하게 cost function이

        minimize 되도록 고른다(like Gini index) 

 

from sklearn.model_selection import KFold,cross_val_score 
from sklearn.tree import DecisionTreeClassifier 
model=DecisionTreeClassifier() 
kfold=KFold(n_splits=10,random_state=6) 
results=cross_val_scroe(model,X,y,cv=kfold) 
print(results.mean()) 

 

 


 

* Support Vector Machine(SVM) 

      · SVM은 클래스 들을 잘 나누는 선을 고른다. 그리고 이 선에 가까운 인스턴스들은 

        support vectors라고 부르고 어떤 라인이 좋은지에 영향을 준다.  

 

      · SVM은 멀티 클래스 들로도 넓혀졌다.  

 

      · 커널 파라미터를 통한 각각의 다른 커널들에 특정한 인스턴스가 사용된다. 

 

      · default로 Radial Basis Function이 사용된다. 

 

from sklearn.model_selection import KFold,cross_val_score 
from sklearn.svm import SVC 
model=SVC(gamma='auto') 
kfold=KFold(n_splits=10,random_state=6) 
results=cross_val_scroe(model,X,y,cv=kfold) 
print(results.mean()) 
Spot-Check Regression Algorithm 

 

 

 


 

Spot-Check Classification Algorithm

 

 

 

 

Contents: 

 

 

1. 회귀 알고리즘

 

  • Linear 모델 회귀 알고리즘 
  • Non-linear 회귀 모델 알고리즘 

 

 

 


 

1. 회귀 알고리즘 

 

 

  • Linear 모델 회귀 알고리즘

    * Linear Regression

      · input 변수들이 가우시안 분포를 가지고 output 변수와 관련이 있다고 가정한다. 

      · input 변수들간의 high correlation이 없다고 가정한다.(if not -> collinearity 문제) 

 

from sklearn.model_selection import KFold,cross_val_score 
from sklearn.linear_model import LinearRegression 
model=LinearRegression() 
kfold=KFold(n_splits=10,random_state=6) 
results=cross_val_scroe(model,X,y,cv=kfold,scoring='neg_mean_squared_error') 
print(results.mean()) 

 

 


 

    * Ridge Regression 

      · linear regression 의 연장선.  

      · L2-norm: 로스함수가 sum(squared (value's coefficient)) 를 minimize하도록 한다. 

 

from sklearn.model_selection import KFold,cross_val_score 
from sklearn.linear_model import Ridge 
model=Ridge() 
kfold=KFold(n_splits=10,random_state=6) 
results=cross_val_scroe(model,X,y,cv=kfold,scoring='neg_mean_squared_error') 
print(results.mean()) 

 

 


 

    * LASSO Linear Regression; Least Absolute Shrinkage and Selection Operator 

      · linear regression의 연장선 

      · L1-norm: 로스함수가 sum(abs(value's coefficient)) 를 minimize하도록 한다. 

 

from sklearn.model_selection import KFold,cross_val_score 
from sklearn.linear_model import Lasso 
model=Lasso() 
kfold=KFold(n_splits=10,random_state=6) 
results=cross_val_scroe(model,X,y,cv=kfold,scoring='neg_mean_squared_error') 
print(results.mean()) 

 

 


    * Elastic Net Regression 

      · Ridge + RASSO 의 특징을 합침. 

      · L2와 L1 norm 모두를 사용하여 magnitude & # of regression coefficients를 

        최소화 하도록 한다. 

 

from sklearn.model_selection import KFold,cross_val_score 
from sklearn.linear_model import ElasticNet 
model=ElasticNet() 
kfold=KFold(n_splits=10,random_state=6) 
results=cross_val_scroe(model,X,y,cv=kfold,scoring='neg_mean_squared_error') 
print(results.mean()) 

 


 

    * non-linear회귀 모델 알고리즘 

      · K-Nearest Neighbors(KNN) 

 

from sklearn.model_selection import KFold,cross_val_score 
from sklearn.neighbors import KNeighborsRegressor 
model=KNeighborsRegressor() 
kfold=KFold(n_splits=10,random_state=6) 
results=cross_val_scroe(model,X,y,cv=kfold,scoring='neg_mean_squared_error') 
print(results.mean()) 

 

 


    * Classification and Regression Trees(CART) 

from sklearn.model_selection import KFold,cross_val_score 
from sklearn.tree import DecisionTreeRegressor 
model=DecisionTreeRegressor() 
kfold=KFold(n_splits=10,random_state=6) 
results=cross_val_scroe(model,X,y,cv=kfold,scoring='neg_mean_squared_error') 
print(results.mean())

 

 

 


    * Support Vector Machines(SVM) 

from sklearn.model_selection import KFold,cross_val_score 
from sklearn.svm import SVR 
model=SVR(gamma='auto') 
kfold=KFold(n_splits=10,random_state=6) 
results=cross_val_scroe(model,X,y,cv=kfold,scoring='neg_mean_squared_error') 
print(results.mean()) 
Compare Models 

 

 


 

 

 

Contents: 

 

1.지속적인 모델 비교 

  • 같은 평가방법/데이터로  머신 러닝 알고리즘 비교

2. 템플릿 

 

from matplotlib import pyplot 
from sklearn.model_selection import KFold,cross_val_score 
from sklearn.linear_model import LogisticRegression 
from sklearn.svm import SVC 
from sklearn.naïve_bayes import GaussianNB 
from sklearn.tree import DecisionTreeClassifier 
from sklearn.neighbors import KNeighborsClassifier 
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis 

 

# prepare models 

models = [] 
models.append(('LR', LogisticRegression(solver='liblinear'))) 
models.append(('LDA', LinearDiscriminantAnalysis())) 
models.append(('KNN', KNeighborsClassifier())) 
models.append(('CART', DecisionTreeClassifier())) 
models.append(('NB', GaussianNB())) 
models.append(('SVM', SVC(gamma='auto'))) 

 

# evaluate each model in turn 

results = [] 
names = [] 
scoring = 'accuracy' 
for name, model in models: 
kfold = KFold(n_splits=10, random_state=7) 
cv_results = cross_val_score(model, X, Y, cv=kfold, scoring=scoring) 
results.append(cv_results) 
names.append(name) 
msg = "%s: %f (%f)" % (name, cv_results.mean(), cv_results.std()) 
print(msg) 

 

# boxplot algorithm comparison 

fig = pyplot.figure() 
fig.suptitle('Algorithm Comparison') 
ax = fig.add_subplot(111) 
pyplot.boxplot(results) 
ax.set_xticklabels(names) 
pyplot.show() 

 

 


 

밑바닥부터 시작하는 데이터 러닝

데이터 사이언스, 머신 러닝 오픈소스 무료 강좌.

data-learning.tistory.com

* 해당 게시물은 첫번째 배너 및 출처를 첨부하면 상업적 용도를 제외하고 사용하실수 있습니다.

 

댓글