반응형
sklearn라이브러리에서 자주 쓰이는 모델로 머신러닝 입문자라면 누구나 한번쯤 돌려봤을 기초적인 코드입니다. 오늘은 SVM(서포트벡터머신)으로 margin, decision boundary를 포함하여 plot을 그려보는 예제 코드를 소개하려고 합니다. 이번에는 그저 그래프를 그리는 예제이기 때문에 따로 SVM의 개념과 margin이 크면 좋은 모델이다 하이퍼 파라미터 C는 어떤식으로 설정해야 된다던지 하는 내용은 담지 않겠습니다.
csv 데이터 읽기
import pandas as pd
x = pd.read_csv('2_X_1.csv')
y = pd.read_csv('2_Y_1.csv')
x= x.iloc[:,0:2].values
y = y.values
x= np.array(x)
y= np.array(y)
먼저 자주 쓰인 pandas로 csv파일을 읽어와 x 입력 데이터와 y 라벨 데이터를 정의합니다.
Linear SVM 모델
from sklearn import svm
import numpy as np
svm1 = svm.SVC(kernel='linear')
svm1.fit(x,y.ravel())
sklearn의 최대장점은 좋은 모델들을 한줄로 불러 오고 직접 실행시켜 볼 수 있다는 편의성이죠 단 2줄로 끝냅시다.
RBF SVM 모델
svm1 = svm.SVC(kernel='rbf')
svm1.fit(x,y.ravel())
SVM plot 그리기
import math
import matplotlib.pyplot as plt
def showplt(x,y,svm1,title):
plt.scatter(x[:,0], x[:,1], c=y, s=30, cmap=plt.cm.Paired)
ax = plt.gca()
xlim = ax.get_xlim()
ylim = ax.get_ylim()
xx = np.linspace(xlim[0], xlim[1], 30)
yy = np.linspace(ylim[0], ylim[1], 30)
YY, XX = np.meshgrid(yy, xx)
xy = np.vstack([XX.ravel(), YY.ravel()]).T
Z = svm1.decision_function(xy).reshape(XX.shape)
#margins,decision boundary
ax.contour(XX, YY, Z, colors='k', levels=[-1,0,1], alpha=0.5, linestyles=['--', '-', '--'])
#Support Vector
ax.scatter(svm1.support_vectors_[:,0], svm1.support_vectors_[:,1], s=60, facecolors='r')
plt.title(title)
plt.show()
모델과 x,y데이터를 불러와 데이터 표시 및 margins, decision boundary를 그려주는 코드입니다.
결과
실선으로 결정경계선을 나타내고 마진거리에 있는 서포트벡터들을 빨간색으로 처리해주었습니다.
반응형
'개발' 카테고리의 다른 글
파이썬 logistic regression 그래프 예제 (without sklearn) (0) | 2022.05.19 |
---|---|
(ETL) TALEND OPEN STUDIO DB 데이터 엑셀로 출력하기(MSSQL) (0) | 2022.05.18 |
(ETL) TALEND OPEN STUDIO를 설치해보자. (0) | 2022.05.12 |
파이썬 머신러닝 Ensemble voting 기법 예제(KNeigborsClassifier,DecisionTree,KFold,SVM) (0) | 2022.05.11 |
파이썬 keras layers LSTM 간단한 예제 (0) | 2022.05.11 |
댓글