【发布时间】:2019-08-03 09:36:36
【问题描述】:
我正在尝试将我的 lat long 数据聚类并划分为 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()
【问题讨论】:
-
尝试搜索。您的问题可能已经回答了stackoverflow.com/questions/53075481/…(有许多类似问题的链接)
标签: scikit-learn cluster-analysis latitude-longitude