Betrachten Sie die folgende Beispieltabelle:Finden Cluster von Werten mit Postgresql
CREATE TABLE rndtbl AS
SELECT
generate_series(1, 10) AS id,
random() AS val;
und ich möchte voneinander mindestens 0,1 für jeden id
ein cluster_id
, so dass die Cluster sind weit entfernt zu finden. Wie würde ich eine solche Cluster-Zuweisung berechnen?
wäre ein spezifisches Beispiel sein:
select * from rndtbl ;
id | val
----+-------------------
1 | 0.485714662820101
2 | 0.185201027430594
3 | 0.368477711919695
4 | 0.687312887981534
5 | 0.978742253035307
6 | 0.961830694694072
7 | 0.10397826647386
8 | 0.644958863966167
9 | 0.912827260326594
10 | 0.196085536852479
(10 rows)
Das Ergebnis wäre: id
s (2,7,10) in einem Cluster und (5,6,9) in einem anderen Cluster und (4,8) in einem anderen und (1) und (3) als Singleton-Cluster.
Vielleicht gibt es einen Weg, dies in Postgres zu tun, aber ich persönlich würde eher Data Science Sachen mit einem Werkzeug wie R, das viele Pakete hat, um mit dieser Art von Problem umzugehen. –