Der Calinski-Harabasz (CH) Index, 1974 von Calinski und Harabasz eingeführt, kann zur Beurteilung von Clustering-Modellen verwendet werden, wenn die wahren Klassenlabels der Datenpunkte unbekannt sind. Die Validierung der Qualität des Clusterings erfolgt dabei auf der Grundlage von in den Daten inhärenten Größen und Merkmalen. Der CH-Index misst, wie ähnlich ein Objekt innerhalb seines eigenen Clusters ist (Kohäsion) im Vergleich zu anderen Clustern (Separation). Kohäsion wird anhand der Abstände der Datenpunkte in einem Cluster zu ihrem jeweiligen Clustermittelpunkt geschätzt, während Separation auf der Distanz der Clustermittelpunkte zum globalen Zentroid basiert. Der CH-Index hat die Form (a . Separation)/(b . Kohäsion), wobei a und b Gewichte sind.
Berechnung des Calinski-Harabasz-Indexes:
Der CH-Index für K Cluster in einem Datensatz D = [d1, d2, d3, … dN] ist definiert als:

wobei nk und ck die Anzahl der Punkte und der Zentroid des k-ten Clusters sind, c der globale Zentroid ist und N die Gesamtzahl der Datenpunkte ist.
Ein höherer CH-Index bedeutet, dass die Cluster dicht und gut getrennt sind. Es gibt jedoch keinen “akzeptablen” Schwellenwert. Man sollte die Lösung wählen, die einen Peak oder zumindest einen abrupten Knick im Liniendiagramm der CH-Indizes zeigt. Wenn die Linie jedoch glatt ist (horizontal, aufsteigend oder absteigend), gibt es keinen Grund, eine Lösung gegenüber anderen zu bevorzugen.
Implementierung des Calinski-Harabasz-Indexes in Python:
In Python kann man den Calinski-Harabasz-Index mithilfe der Scikit-Learn-Bibliothek berechnen. Nachdem man ein Clustering-Modell, beispielsweise k-Means, auf seinen Datensatz angewendet hat, kann man den Index wie folgt berechnen:
from sklearn.metrics import calinski_harabasz_score
# Angenommen, X ist Ihr Datensatz und model.labels_ sind die Cluster-Labels, die das Modell generiert hat
ch_index = calinski_harabasz_score(X, model.labels_)
print("Calinski-Harabasz-Index:", ch_index)
Mit dieser Implementierung kann man den Calinski-Harabasz-Index für verschiedene Clusterlösungen berechnen und diejenige auswählen, die den höchsten Wert oder zumindest einen Peak im Liniendiagramm der Indizes aufweist.