【HALCON】add_sample_class_knn 関数について - k-NN分類器にサンプルを追加

【HALCON】add_sample_class_knn 関数について - k-NN分類器にサンプルを追加

2024-08-23

2024-08-23

HALCONadd_sample_class_knn関数は、k-Nearest Neighbors (k-NN)分類器に対して新しいサンプルを追加するための機能を提供します。サンプルは特徴ベクトルとクラスIDで構成され、分類器に追加されることでモデルの精度が向上します。k-NN分類器は、最も近いサンプルを基にクラスを分類するアルゴリズムで、追加されたデータは次回のtrain_class_knn関数で学習されます。画像分類やデータ分類において、データセットを拡張して精度を向上させる場面で特に役立ちます。

使用例

以下に、add_sample_class_knn関数を使用してk-NN分類器にサンプルを追加する具体的な例を示します。

* k-NN分類器を作成する
create_class_knn(3, 2, &KNNHandle)

* 特徴ベクトルとクラスIDを指定してサンプルを追加
add_sample_class_knn(KNNHandle, [0.7, 1.4], 1)

* 別のサンプルを追加
add_sample_class_knn(KNNHandle, [2.2, 3.0], 0)

* k-NN分類器をトレーニング
train_class_knn(KNNHandle)

この例では、create_class_knn関数でk-NN分類器を作成し、add_sample_class_knn関数を使ってサンプルを追加しています。その後、train_class_knn関数でモデルをトレーニングしています。

引数

  • KNNHandle
    k-NN分類器のハンドル。create_class_knn関数で生成されたハンドルを指定します。
  • Features
    サンプルの特徴ベクトルです。各サンプルの特徴を数値の配列として指定し、k-NN分類器の次元数と一致している必要があります。
  • ClassID
    サンプルが所属するクラスを指定します。各サンプルのクラスを整数値で指定します。

戻り値

add_sample_class_knn関数は、追加されたサンプルが分類器に適用された状態を持つk-NN分類器を返します。このデータは、後のトレーニングプロセスで使用されます。

応用例

画像分類タスクでの使用

この関数は、画像分類のためにk-NNモデルをトレーニングする際に利用されます。各画像から抽出した特徴ベクトルを分類器に追加し、モデルの精度を高めることができます。

* 画像分類用の特徴ベクトルを追加
add_sample_class_knn(KNNHandle, [100, 150, 200], 2)
add_sample_class_knn(KNNHandle, [50, 60, 70], 1)

この例では、RGB値を特徴ベクトルとしてk-NN分類器にサンプルを追加しています。

大規模データセットの処理

HALCONadd_sample_class_knn関数は並列処理に対応しており、大規模なデータセットに対して効率的にサンプルを追加することが可能です。

* 並列処理でサンプルを追加
parallel(
    add_sample_class_knn(KNNHandle, [0.9, 1.7], 1),
    add_sample_class_knn(KNNHandle, [2.5, 3.4], 0)
)

このコードでは、複数のサンプルを並列に追加し、処理速度を向上させています。並列処理を利用することで、大量のデータセットでも効率的に学習が進められます。

注意点

  • Featuresの長さは、k-NN分類器を作成した際に指定した次元数と一致している必要があります。次元が異なる場合、エラーが発生するため注意が必要です。
  • 新しいサンプルは、train_class_knn関数を実行してモデルを再トレーニングするまで分類に反映されません。サンプルを追加した後には、必ず再トレーニングを行う必要があります。

まとめ

HALCONadd_sample_class_knn関数は、k-Nearest Neighbors (k-NN)分類器に新しいサンプルを追加し、モデルのトレーニングデータセットを拡張するための便利なツールです。画像分類や機械学習の精度向上に寄与し、並列処理にも対応しているため、大規模なデータセットに対しても迅速に処理が可能です。

Recommend