mein kmeans-Algorithmus funktioniert mittlerweile, nun möchte ich die optimale Anzahl an Clustern automatisch bestimmen. Man muss zunächst sagen, dass die Daten sehr ähnlich sind (Verkaufswerte) und die Silhouettenkoeffizienten sehr niedrig sind.
Ich habe hier mal beispielhaft die inertia_-Werte des kmeans für die Clusterannzahl 1-20 geplottet:
Man sieht hier eine mögliche Anzahl an optimaler Cluster von drei, diese ist aber nicht gut, da es noch mehr sinnvolle Cluster gibt.
Daher würde ich gerne im Bereich zwischen 5 und 20 nach der optimalen Anzahl suchen.
So sieht meine Code aktuell aus:
Code: Alles auswählen
for k in range(1,20):
km = KMeans(n_clusters=k, random_state=0)
km = km.fit(normalized_modeling_data)
sum_squared_dist.append(km.inertia_)
Dann könnte man im Intervall 5 bis 20 für jeden Punkt den Abstand zu dieser Geraden berechnen und das Maximum wäre dann die optimale Anzahl an Cluster.
Hat so etwas jemand schon einmal gemacht, kann mir helfen oder hat möglicherweise sogar eine bessere Idee?