2 次元 K-means アルゴリズムを用いて、各ジオメトリオブジェクトにクラスター ID を割り当てます。
構文
integer ST_ClusterKMeans(geometry winset geom, integer numberOfClusters);戻り値:各ジオメトリオブジェクトに割り当てられるクラスター ID を表す整数値です。
パラメーター
| パラメーター | 説明 |
|---|---|
geom | クラスタリング対象のジオメトリオブジェクトです。 |
numberOfClusters | 生成するクラスターの数です。 |
注意事項
ST_ClusterKMeansはウィンドウ関数です。OVER()句を指定して呼び出してください。クラスタリング距離は、入力ジオメトリオブジェクトの重心間の距離として計算されます。
例
基本的なクラスタリング
以下の例では、4 つの 2 次元ポイントを 2 つのグループにクラスタリングします。
SELECT ST_ClusterKMeans(geom, 2) OVER(), ST_AsText(geom)
FROM (
SELECT unnest(ARRAY[
'POINT (0 0)'::geometry,
'POINT(1 1)'::geometry,
'POINT (-1 -1)'::geometry,
'POINT (-2 -2)'::geometry
]) AS geom
) AS test;出力結果:
st_clusterkmeans | st_astext
------------------+--------------
0 | POINT(0 0)
0 | POINT(1 1)
1 | POINT(-1 -1)
1 | POINT(-2 -2)
(4 rows)