서포트 백터 머신 SVM ( Support Vector Machine) 지도학습을 위한 가장 기본적인 방법
1. 정의
- 분리된 초평면에 의해 정의된 분류 모델이다.
- 최적의 초평면을 찾는 것
- 가장 최적의 의사 결정 경계는 모든 클래스의 가장 가까운 점으로부터 최대 마진을 갖는 결정 경계입니다.
- 결정 경계와 점 사이의 거리를 최대화하는 결정 경계로부터의 가장 가까운 점을 그림 2에서 보듯이 Support Vector 라고 부른다. Support Vector 의 결정 경계는 최대 마진 분류기 또는 최대 마진 하이퍼 평면이라고 불린다.
- python에서 svm kernel의 종류 ==> linear, poly(다항), rbf(가우시안), sigmoid(시그모이드)
2. Python Example
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import pandas as pd
from sklearn.svm import SVC
from sklearn.metrics import classification_report, confusion_matrix
iris = load_iris()
X = pd.DataFrame(iris.data, columns=iris.feature_names)
y = pd.DataFrame({'class':iris.target})
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.20)
svclassifier = SVC(kernel='linear', degree=8)
svclassifier.fit(X_train, y_train)
y_pred = svclassifier.predict(X_test)
print('score : ',svclassifier.score(X_test,y_test))
print(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred))
svclassifier = SVC(kernel='poly', degree=8)
svclassifier.fit(X_train, y_train)
y_pred = svclassifier.predict(X_test)
print('score : ',svclassifier.score(X_test,y_test))
print(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred))
svclassifier = SVC(kernel='rbf', degree=8)
svclassifier.fit(X_train, y_train)
y_pred = svclassifier.predict(X_test)
print('score : ',svclassifier.score(X_test,y_test))
print(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred))
svclassifier = SVC(kernel='sigmoid', degree=8)
svclassifier.fit(X_train, y_train)
y_pred = svclassifier.predict(X_test)
print('score : ',svclassifier.score(X_test,y_test))
print(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred))
참고 자료
https://stackabuse.com/implementing-svm-and-kernel-svm-with-pythons-scikit-learn/
'Machine Learning' 카테고리의 다른 글
통계의 그룹별 분석의 기초 - Anova ( 분산 분석 ) (0) | 2019.10.09 |
---|---|
예측력이 좋은 XGBoost Regression 개념 및 python 예제 (0) | 2019.10.09 |
정규화 선형회귀( Regularization Regression ) - ridge, lasso, elasticnet 개념과 python 예제 (1) | 2019.10.09 |
Random Forest Regression ( 랜덤포래스트 회귀 ) 개념 및 python 예제 (0) | 2019.10.09 |
Logistic Regression (로지스틱 회귀) 개념 및 python 예제 (0) | 2019.10.09 |