Python でサポート ベクター マシン アルゴリズムを作成するにはどうすればよいですか?
サポート ベクター マシン (SVM) は、バイナリ分類および回帰問題に使用される機械学習アルゴリズムです。その主な目標は、異なるカテゴリのデータ ポイントを可能な限り分離し、境界上のデータ ポイントから超平面までの距離を最大化する最適な超平面を見つけることです。この記事では、Python を使用して簡単なサポート ベクター マシン アルゴリズムを作成する方法と、具体的なコード例を紹介します。
まず、scikit-learn ライブラリをインストールする必要があります。次のコマンドを使用して、Python 環境にインストールできます:
pip install -U scikit-learn
次に、必要なライブラリをインポートします:
from sklearn import svm
この例では、scikit-learn の SVC クラスを使用します。サポート ベクター マシン アルゴリズムを実装するためのライブラリ。簡単な例を使用して、アルゴリズムの使用法を説明します。 2 つの特徴 X と対応するカテゴリ ラベル y で構成されるトレーニング データセット X があるとします。 SVM モデルをトレーニングすることで、新しいデータ ポイントのカテゴリを予測したいと考えています。
以下は簡単なコード例です:
# 创建训练数据集 X = [[0, 0], [1, 1]] y = [0, 1] # 创建SVM模型 clf = svm.SVC() # 训练模型 clf.fit(X, y) # 预测新数据点的类别 new_data = [[2, 2]] print(clf.predict(new_data))
この例では、まず 2 つの特徴と対応するカテゴリ ラベル y を含むトレーニング データ セット X を作成します。次に、SVC クラスを使用してサポート ベクター マシン モデル clf を作成します。次に、fit 関数を使用してモデルをトレーニングします。最後に、predict 関数を使用して新しいデータ ポイントを予測し、そのカテゴリを出力します。
上記の例は単なる単純な例であり、実際のアプリケーションではより複雑なデータ セットとより多くの前処理手順が必要であることに注意してください。
デフォルトの線形カーネル関数に加えて、サポート ベクター マシンは、非線形データ セットを処理するための他のカーネル関数の使用もサポートします。 scikit-learn ライブラリの SVC クラスは、「kernel」パラメータを通じて使用するカーネル関数を指定できます。たとえば、多項式カーネル関数を使用して、多項式特性を持つデータ セットを処理できます。
# 创建SVM模型,并指定使用多项式核函数 clf = svm.SVC(kernel='poly', degree=3)
上記のコードでは、SVM モデル clf を作成し、「poly」パラメーターを使用して多項式カーネル関数を指定しました。 'degree' パラメータは多項式の次数を指定します。
これに加えて、サポート ベクター マシンは、不均衡なクラスを持つデータ セットも処理できます。 scikit-learn ライブラリの SVC クラスは、「class_weight」パラメータを通じてクラスの重みを指定できます。たとえば、「class_weight」パラメータを使用して、より小さなカテゴリの重みのバランスをとることができます。
# 创建SVM模型,并指定类别权重 clf = svm.SVC(class_weight={0: 1, 1: 10})
上記のコードでは、SVM モデル clf を作成し、「class_weight」パラメータを使用してクラスの重みを指定しました。ここで、カテゴリ 0 の重みは 1、カテゴリ 1 の重みは 10 です。
要約すると、上記の例は、サポート ベクター マシン アルゴリズムを実装するための単純な Python コードを示しています。 scikit-learn ライブラリの SVC クラスを通じて、サポート ベクター マシン モデルを作成し、モデルをトレーニングし、そのモデルを使用して新しいデータ ポイントで予測を行うことができます。これに加えて、さまざまなカーネル関数とクラスの重みを指定することで、さまざまなタイプのデータセットを処理することもできます。この記事がサポート ベクター マシン アルゴリズムの実装プロセスを理解するのに役立つことを願っています。
以上がPython でサポート ベクター マシン アルゴリズムを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。