Я пытаюсь кластеризовать и разделить свои латинские данные на 12 различных областей, однако алгоритм kmeans не работает.Я пробовал только 2 кластера, и он так сильно сломался (картинка прилагается), что даже 12 не работал хорошо. Я знаю, что kmeans чувствителен к шуму, и я также убрал его
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from collections import Counter
df = pd.read_csv("all.csv");
df = df.dropna()
df = df.loc[ ~(df["area"]=="FarEast")]
df["Latitude"] = df["Latitude"].astype(float)
df["Longitude"] = df["Longitude"].astype(float)
df = df.drop(df.nsmallest(4,"Longitude").index)
X=df.loc[:,['Latitude','Longitude']]
X = X.reset_index()
id_n=2
kmeans = KMeans(n_clusters=id_n, random_state=0).fit(X)
id_label=kmeans.labels_
#plot result
ptsymb = np.array(['b.','r.','m.','g.','c.','k.','b*','r*','m*','r^']);
plt.figure(figsize=(12,12))
plt.ylabel('Longitude', fontsize=12)
plt.xlabel('Latitude', fontsize=12)
# import itertools
# marker = itertools.cycle((',', '+', '.', 'o', '*'))
for i in range(id_n):
cluster=np.where(id_label==i)[0]
plt.plot(X.Latitude[cluster].values,X.Longitude[cluster].values,ptsymb[i])
plt.show()
![Cluster Images](https://i.stack.imgur.com/2kn6l.png)