Python의 지원 벡터 머신 알고리즘 예

王林
풀어 주다: 2023-06-10 16:42:14
원래의
1311명이 탐색했습니다.

Support Vector Machines, 전체 영어 이름은 Support Vecto Machines 또는 줄여서 SVM입니다. 특히 작은 표본, 비선형 및 고차원 패턴 인식에서 매우 우수한 분류 모델입니다. SVM은 1992년 Vapnik 팀에 의해 제안되었습니다. 처음에는 이진 분류 문제를 해결하는 데 사용되었으며 이후 점차 다중 분류 문제를 처리할 수 있는 알고리즘으로 발전했습니다.

Python은 SVM을 포함한 수많은 기계 학습 알고리즘 패키지를 구현하는 간결하고 강력한 프로그래밍 언어입니다. 이 기사에서는 Python을 통해 서포트 벡터 머신 알고리즘을 구현하는 단계를 소개합니다.

1. 데이터 준비

간단한 학습 데이터 세트를 구성해 보겠습니다. x1이 키를 나타내고, x2가 체중을 나타내고, y가 클래스 레이블(0 또는 1)인 예제 데이터세트를 만듭니다.

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(7)
X_train = np.array([[167, 75], [182, 80], [176, 85], [156, 50], [173, 70], [183, 90], [178, 75], [156, 45],
                    [162, 55], [163, 50], [159, 45], [180, 85]])
y_train = np.array([0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1])
plt.scatter(X_train[y_train == 0][:, 0], X_train[y_train == 0][:, 1], c='r', s=40, label='Male')
plt.scatter(X_train[y_train == 1][:, 0], X_train[y_train == 1][:, 1], c='b', s=40, label='Female')
plt.legend()
plt.xlabel('Height')
plt.ylabel('Weight')
plt.show()
로그인 후 복사

이 데이터 세트에서는 사람들을 남성 또는 여성으로 분류합니다.

2. 분류기 선택

다음으로 이 문제에 적합한 분류기, 즉 SVM을 선택해야 합니다. SVM에는 다양한 변형이 있지만 여기서는 선형 SVM을 사용합니다.

SVM 모델을 구성해 보겠습니다.

from sklearn.svm import SVC

svm = SVC(kernel='linear')
svm.fit(X_train, y_train)
로그인 후 복사

여기에서는 SVC 클래스를 사용하고 kernel 매개변수를 linear로 지정합니다. 선형 커널. SVC类,指定kernel参数为linear,表明我们使用线性核。

三、绘制决策边界

我们想要知道模型的性能如何,因此我们可以在绘制出分类器的决策边界:

def plot_decision_boundary(model, ax=None):
    if ax is None:
        ax = plt.gca()
    x_min, x_max = ax.get_xlim()
    y_min, y_max = ax.get_ylim()
    xx, yy = np.meshgrid(np.linspace(x_min, x_max, 100),
                         np.linspace(y_min, y_max, 100))
    Z = model.predict(np.c_[xx.ravel(), yy.ravel()]).reshape(xx.shape)
    ax.contourf(xx, yy, Z, alpha=0.2)
    ax.contour(xx, yy, Z, colors='black', linewidths=0.5)
    ax.set_xlim([x_min, x_max])
    ax.set_ylim([y_min, y_max])
    
plt.scatter(X_train[y_train == 0][:, 0], X_train[y_train == 0][:, 1], c='r', s=40, label='Male')
plt.scatter(X_train[y_train == 1][:, 0], X_train[y_train == 1][:, 1], c='b', s=40, label='Female')
plot_decision_boundary(svm)
plt.legend()
plt.xlabel('Height')
plt.ylabel('Weight')
plt.show()
로그인 후 복사

运行结束后,可以看到绘制出了分类器的决策边界。

四、预测新数据

我们可以用训练好的模型对新的数据进行预测。

X_test = np.array([[166, 70], [185, 90], [170, 75]])
y_test = svm.predict(X_test)
print(y_test)
로그인 후 복사

在这里,我们使用predict

3. 결정 경계 그리기

모델의 성능을 알고 싶기 때문에 분류기의 결정 경계를 그릴 수 있습니다.

rrreee

실행하고 나면 분류기의 결정 경계가 그려지는 것을 볼 수 있습니다. 🎜🎜4. 새로운 데이터 예측🎜🎜학습된 모델을 사용하여 새로운 데이터를 예측할 수 있습니다. 🎜rrreee🎜여기에서는 predict 함수를 사용하여 세 개의 새로운 데이터 샘플을 예측합니다. 해당 카테고리가 반환됩니다. 🎜🎜결론🎜🎜이 글에서는 Python에서 Support Vector Machine 알고리즘을 사용하는 방법을 소개했습니다. 간단한 훈련 데이터 세트를 생성하고 선형 SVM을 사용하여 분류기를 구축했습니다. 또한 분류기의 결정 경계를 표시하고 모델을 사용하여 새로운 데이터 샘플을 예측했습니다. SVM은 또한 여러 경우에 매우 인기 있는 알고리즘이며 많은 분야에서 좋은 성능을 달성할 수 있습니다. 데이터를 처리할 때 더 많은 기계 학습 알고리즘을 익히고 싶다면 SVM도 배울 가치가 있습니다. 🎜

위 내용은 Python의 지원 벡터 머신 알고리즘 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!