教師なし学習のためのK-Meansクラスタリングを探求しましょう。このアルゴリズムがデータを分割し、AIアプリケーションを強化し、Ultralytics モデルに情報を提供する仕組みを発見してください。
K-Meansクラスタリングは、 教師なし学習の分野において基礎的かつ広く用いられるアルゴリズムであり、 ラベル付けされていないデータ内の隠れた構造を明らかにすることを目的としています。 その主な目的は、データセットをクラスタと呼ばれる明確なサブグループに分割し、 同一グループ内のデータポイントが可能な限り類似している一方で、 異なるグループ内のデータポイントが明確に区別されるようにすることです。データマイニングと探索的分析の基盤として、K-Meansはデータサイエンティストが事前定義されたラベルや人間の監督なしに、複雑な情報を管理可能なカテゴリへ自動的に整理することを可能にします。
K-Meansの動作は反復的であり、距離メトリックに基づいて学習データの最適なグループ分けを決定する。 このアルゴリズムは、各項目をK個のクラスターに分類することで動作する。各項目は、最も近い平均値(重心)を持つクラスターに属する。 このプロセスにより、各グループ内の分散が最小化される。 ワークフローは一般的に以下の手順に従う:
クラスタの適切な数(K)を決定することは、このアルゴリズムを使用する上で重要な側面である。実務者は、エルボー法のような手法を用いたり、シルエットスコアを分析したりして、結果として得られるクラスタがどれだけ分離されているかを評価することが多い。
K-Meansクラスタリングは汎用性が高く、様々な産業分野においてデータの簡素化や前処理に活用されています。
Ultralytics 深層学習フレームワークが複雑なトレーニングパイプラインを処理する一方で、K-Meansはデータセットの統計分析によく用いられます。以下のPython 、人気のあるScikit-learnライブラリを使用して2次元座標(物体の重心点をシミュレート)をクラスタリングする方法を示しています。
import numpy as np
from sklearn.cluster import KMeans
# Simulated coordinates of detected objects (e.g., from YOLO26 inference)
points = np.array([[10, 10], [12, 11], [100, 100], [102, 101], [10, 12], [101, 102]])
# Initialize K-Means to find 2 distinct groups (clusters)
kmeans = KMeans(n_clusters=2, random_state=0, n_init="auto").fit(points)
# Output the cluster labels (0 or 1) for each point
print(f"Cluster Labels: {kmeans.labels_}")
# Output: [1 1 0 0 1 0] -> Points near (10,10) are Cluster 1, near (100,100) are Cluster 0
プロジェクトに適切なツールを選択するためには、K-Meansを類似した名称や機能を持つ他のアルゴリズムと区別することが重要です。