경계선을 긋되 양쪽 무리에서 최대한 멀리! 두 마을 사이에 가장 넓은 길을 내듯, 여유 폭(마진)을 최대화하는 분류기예요.
🖱️ 빈 곳을 클릭하면 파랑(+1) 점이 추가되고, 점 근처를 클릭하면 삭제돼요.
📖 읽는 법: 가로·세로축은 두 가지 특징이에요. 굵은 파란 직선이 결정 경계(w·x+b=0), 양옆 회색 점선이 마진 경계(w·x+b=±1), 그 사이가 "길"이에요. 노란 링이 있는 점이 경계를 떠받치는 서포트 벡터 — 이 점들만 경계에 영향을 줘요.
마진 폭은 2/‖w‖를 데이터 좌표로 환산한 값이에요. 학습이 진행되면 침범 없는 선에서 최대한 넓어져요.
from sklearn import svm
import numpy as np
X = np.array([[2.5, 3.0], [3.1, 2.2], [2.0, 2.8], # 🔴 빨강 마을
[7.2, 7.5], [8.0, 6.9], [7.5, 8.1]]) # 🔵 파랑 마을
y = np.array([-1, -1, -1, 1, 1, 1])
model = svm.SVC(kernel='linear', C=1.0) # 선형 SVM, C = 엄격함
model.fit(X, y) # 가장 넓은 길 찾기!
print(model.support_vectors_) # 경계를 결정한 점들만 나와요
print(model.predict([[5.0, 5.0]])) # 새 점은 어느 마을?