-
서포트 벡터 머신(SVM) 실습아가개발자/머신러닝 2020. 12. 5. 19:56
서포트 벡터 머신 (SVM) : 두 개의 카테고리 중 하나의 속한 데이터 집합이 주어졌을 때 주어진 데이터의 집합을 바탕으로(지도 학습 모델) 새로운 데이터가 어느 카테고리에 속하는지 판단하는 비 확률적 이진 선형 분류 모델 혹은 커널 트릭을 사용하여 비선형 분류 문제도 해결 가능
- 데이터 셋 불러오기
싸이킷 런의 datasets 라이브러리를 통하여 실습에 사용할 데이터인 iris 데이터 셋을 불러온다.
더보기<sklearn.datasets.load_iris>
manual: scikit-learn.org/stable/modules/generated/sklearn.datasets.load_iris.html#sklearn.datasets.load_iris
import torch import pandas as pd import numpy as np from sklearn.datasets import load_iris iris = load_iris() ################# iris.feature_names() 를 이용하여 컬럼명 확인하기 ################# data_x = pd.DataFrame(data = iris.data, columns=['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']) data_y = pd.DataFrame(data = iris.target)
- 학습 데이터/ 테스트 데이터 나누기
제공된 iris 데이터에서 모델을 학습 시켜줄 데이터와 학습한 모델의 성능을 수치로 확인해보기 위해 학습에 사용될 데이터와 테스트에 사용될 데이터를 나누어 준다.
더보기<sklearn.model_selection.train_test_split>
from sklearn.model_selection import train_test_split x_train, x_test, y_train, y_test = train_test_split(x_data, y_data, test_size = 0.3) # 학습/테스트 데이터 비율 -> 7:3
- 모델 학습
선형 SVM
더보기<sklearn.svm.SVC>
manual: scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html?highlight=svc#sklearn.svm.SVC
from sklearn.svm import SVC linear_svm = SVC(kernel='linear', C=0.5) linear_svm.fit(x_train, y_train) y_pred = linear_svm.predict(x_test)
*사용된 SVC의 파라미터*
kernel : 알고리즘에 사용할 커널 유형
C: 정규화 강도와 반비례 → 에러 허용 정도
비선형 SVM
from sklearn.svm import SVC non_linear_svm = SVC(kernel= 'rbf', gamma= 0.3) non_linear_svm.fit(x_train, y_train) y_pred = non_linear_svm.predict(x_test)
*사용된 SVC의 파라미터*
kernel : 알고리즘에 사용할 커널 유형
gamma: rbf의 설정 파라미터 → gamma 작을 수록 overfit, 클 수록 underfit
- 성능 평가
더보기<sklearn.metrics.accuracy_score>
from sklearn.metrics import accuracy_score print(accuracy_score(y_test, y_pred))
'아가개발자 > 머신러닝' 카테고리의 다른 글
차원 축소 (Dimension Reduction) (0) 2020.12.07 군집화 (Clustering) (0) 2020.12.06 서포트 벡터 머신 (Linear SVM / Non-linear SVM) (0) 2020.12.04 서포트 벡터 머신 (SVM) (0) 2020.12.03 의사결정나무 - Decision Tree (0) 2020.10.20