ホームページ  >  記事  >  バックエンド開発  >  Python でのサポート ベクター マシン アルゴリズムの例

Python でのサポート ベクター マシン アルゴリズムの例

王林
王林オリジナル
2023-06-10 16:42:141408ブラウズ

サポート ベクター マシン。英語での正式名称は Support Vecto Machines、略して SVM です。これは、特にサンプルが小さい、非線形および高次元のパターン認識において、非常に優れた分類モデルです。 SVM は 1992 年に Vapnik チームによって提案されました。最初は 2 項分類問題を解決するために使用され、その後徐々に多分類問題を処理できるアルゴリズムに開発されました。

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 ## として指定します。 # は、線形カーネルを使用することを示します。

3. 決定境界を描く

モデルのパフォーマンスを知りたいので、分類器の決定境界を描くことができます:

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()

実行後完了すると、分類器の決定境界がプロットされていることがわかります。

4. 新しいデータを予測する

トレーニングされたモデルを使用して、新しいデータを予測できます。

X_test = np.array([[166, 70], [185, 90], [170, 75]])
y_test = svm.predict(X_test)
print(y_test)

ここでは、

predict 関数を使用して 3 つの新しいデータ サンプルを予測します。カテゴリが返されます。

結論

この記事では、Python でサポート ベクター マシン アルゴリズムを使用する方法を紹介しました。シンプルなトレーニング データセットを作成し、線形 SVM を使用して分類器を構築しました。また、分類器の決定境界をプロットし、そのモデルを使用して新しいデータ サンプルを予測しました。 SVM は多くの場面で非常に人気のあるアルゴリズムでもあり、多くの分野で優れたパフォーマンスを実現できます。データを処理する際にさらに多くの機械学習アルゴリズムを習得したい場合は、SVM も学ぶ価値があります。

以上がPython でのサポート ベクター マシン アルゴリズムの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。