Categories: Bash Scripts

파이썬에서 Support Vector Machine(SVM) 활용하기

안녕하세요, mj입니다!

오늘은 Support Vector Machine(SVM)을 활용하여 파이썬에서 분류 문제를 해결하는 방법에 대해 알아보겠습니다. SVM은 강력한 분류 알고리즘으로, 다양한 분야에서 활발히 사용되고 있습니다. 이 글에서는 SVM의 기본 개념과 함께 파이썬 코드 예제를 통해 실습해 보겠습니다.

SVM의 기본 개념

SVM은 데이터 포인트를 분리하는 최적의 경계를 찾는 분류 알고리즘입니다. 이 경계는 ‘하이퍼플레인’이라고 불리며, 가능한 한 많은 데이터 포인트를 올바르게 분류하는 방향으로 설정됩니다. SVM은 선형 분리뿐만 아니라 비선형 데이터도 처리할 수 있는 커널 기법을 사용합니다.

파이썬에서 SVM 사용하기

파이썬에서는 scikit-learn 라이브러리를 사용하여 SVM을 쉽게 구현할 수 있습니다. 아래의 예제 코드를 통해 SVM을 활용한 분류 문제를 해결해 보겠습니다.

예제 1: 기본 SVM 분류


import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn import svm

# 데이터셋 로드
iris = datasets.load_iris()
X = iris.data[:, :2]  # 앞의 두 개의 특성만 사용
y = iris.target

# SVM 모델 생성
model = svm.SVC(kernel='linear', C=1.0)
model.fit(X, y)

# 결과 시각화
plt.scatter(X[:, 0], X[:, 1], c=y, cmap='viridis')
plt.xlabel('특성 1')
plt.ylabel('특성 2')
plt.title('Iris 데이터셋 SVM 분류')
plt.show()
    

위 코드는 Iris 데이터셋을 사용하여 SVM 모델을 학습하고, 분류 결과를 시각화하는 예제입니다.

예제 2: 비선형 SVM 분류


from sklearn.datasets import make_moons

# 비선형 데이터셋 생성
X, y = make_moons(n_samples=100, noise=0.1)

# SVM 모델 생성
model = svm.SVC(kernel='rbf', C=1.0)
model.fit(X, y)

# 결과 시각화
plt.scatter(X[:, 0], X[:, 1], c=y, cmap='viridis')
plt.title('Make Moons 데이터셋 SVM 분류')
plt.show()
    

위 예제는 비선형 데이터셋을 사용하여 RBF 커널을 적용한 SVM 분류를 보여줍니다.

예제 3: SVM 하이퍼파라미터 조정


from sklearn.model_selection import GridSearchCV

# 하이퍼파라미터 조정
param_grid = {'C': [0.1, 1, 10], 'kernel': ['linear', 'rbf']}
grid = GridSearchCV(svm.SVC(), param_grid, cv=5)
grid.fit(X, y)

print("최적의 파라미터:", grid.best_params_)
    

이 예제는 Grid Search를 사용하여 SVM의 최적 하이퍼파라미터를 찾는 방법을 보여줍니다.

예제 4: SVM을 이용한 이미지 분류


from sklearn.datasets import load_digits

# 데이터셋 로드
digits = load_digits()
X = digits.data
y = digits.target

# SVM 모델 생성
model = svm.SVC(gamma=0.001, C=100.)
model.fit(X, y)

# 예측 및 정확도 평가
predicted = model.predict(X)
print("정확도:", np.mean(predicted == y))
    

위 코드는 손글씨 숫자 데이터셋을 사용하여 SVM 모델을 학습하고, 정확도를 평가하는 예제입니다.

예제 5: 다중 클래스 분류


from sklearn.multiclass import OneVsRestClassifier

# SVM을 이용한 다중 클래스 분류
model = OneVsRestClassifier(svm.SVC())
model.fit(X, y)
predicted = model.predict(X)
print("정확도:", np.mean(predicted == y))
    

이 예제는 One-vs-Rest 방식을 사용하여 다중 클래스 문제를 해결하는 방법을 설명합니다.

결론

SVM은 다양한 데이터셋에서 효과적으로 작동하는 강력한 분류 알고리즘입니다. 파이썬의 scikit-learn 라이브러리를 사용하면 SVM을 쉽게 구현할 수 있으며, 다양한 커널과 하이퍼파라미터 조정을 통해 최적의 성능을 이끌어낼 수 있습니다.

이 글이 SVM을 이해하는 데 도움이 되었기를 바랍니다. 질문이 있으면 언제든지 댓글로 남겨 주세요!

감사합니다!

mj

Recent Posts

대화형 데이터 시각화의 장점과 활용 방법 | 파이썬 가이드

파이썬을 활용한 대화형 데이터 시각화의 장점과 다양한 활용 사례를 알아보세요.

5일 ago

파이썬 대화형 데이터 시각화 기초 – MJ의 블로그

대화형 데이터 시각화의 기초를 배우고, 파이썬을 활용한 다양한 기법을 알아보세요.

1개월 ago

파이썬으로 대화형 데이터 시각화 만드는 방법

파이썬으로 대화형 데이터 시각화를 만드는 방법을 알아보세요. 다양한 예시와 함께 제공합니다.

1개월 ago

대화형 데이터 분석 도구의 완벽한 가이드

대화형 데이터 분석 도구의 종류와 사용법을 소개합니다. 예시와 함께 알아보세요.

1개월 ago

파이썬 대화형 대시보드 디자인 원칙

대화형 대시보드의 효과적인 디자인 원칙과 예시를 소개합니다.

2개월 ago

파이썬으로 대화형 대시보드 구현하기 – mj의 블로그

파이썬을 이용한 대화형 대시보드 구현 방법을 배우고 다양한 예시를 확인하세요.

2개월 ago