Eine sehr einfache Lösung, auf die du vllt. selbst schon längst gekommen bist.
Mit schwermathematischen und/oder AI-Verfahren auffahren ist für eine Antwort wohl etwas überdimensioniert
(zumindest die Zeit, die ich selbst zum Lernen brauchen würde

)
Annahme: Häufung ist ca. kreisförmig, kein "dicker Strich" der sich über das ganze Koordinatensystem zieht etc.
Benötigt: Anzahlen oder Prozentzahlen, wie viel Punkte minimal/maximal in so einer Häufung drin sind.
(ohne Beschränkung wäre jeder Punkt allein eine, und auch alle zusammen...)
Genannt min und max.
a) Zu jedem Punkt P die Entfernung zu allen anderen Punkten einzeln ausrechnen,
zusätzlich pro P die Durchschnittentfernung zu anderen Punkten.
Punkt mit der kleinsten Durchschnittentfernung ist der Mittelpunkt M
b) Für jedes anz zwischen min und max: M und die anz nähesten Punkte hernehmen
und die Koordinaten des kleinsten umschließenden Rechtecks ermitteln
(größtes/kleinstes x/y über alle betroffenen Punkte als Abgrenzung der Seiten)
Rechteck muss nicht schief im Koordinatensystem liegen etc.,
falls es dadurch kleiner werden kann. Seiten parallel zu den Achsen reicht.
Programmatisch geht da in lineares Zeit: Zuerst für min alle betroffenen Punktkoordinaten eben durchsuchen,
und dann nur nach und nach je einen Punkt dazunehmen...
Die ganzen Rechtecke müssen nicht abgespeichert werden,
nur pro Rechteck das Verhältnis InnerePunktanzahl/Fläche ermitteln.
c) Das Rechteck mit dem größten Verhältnis ist das Beste,
die Punkte drin sind die Gesuchten.