Вот мой код для применения алгоритма кластеризации KMeans в Великобритании для моего набора данных (на 2 кластера). В строке clusters = m.scatter(etc,..)
я хочу иметь возможность пометить оба кластера. Аналогично, в строке cog = m.scatter(etc,..)
я хочу иметь соответствующие метки «CoG Cluster 1» И «CoG Cluster 2».
Я пробовал что-то вроде зацикливания, но все еще кажется, что он наносит только 1 метку.
import pandas as pd
from sklearn.cluster import KMeans
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(10, 10))
m = Basemap(projection='lcc', resolution='h',
lat_0=54.7, lon_0=-3.36,
width=0.7E6, height=1.2E6)
m.drawmapboundary(fill_color='white')
m.drawcoastlines()
m.drawcountries()
#load locations
X = pd.read_csv("123.csv")
lat = X['Latitude'].values
lon = X['Longitude'].values
#apply the KMeans Clustering Algorithm and plot clusters
km = KMeans(n_clusters=2, random_state=0, algorithm ='full')
km.fit(X)
# review the cluster labels, save them, and sort by cluster
X['cluster'] = km.labels_
# save the DataFrame of cluster centers
centers = X.groupby('cluster').mean()
# create a "colors" array for plotting
import numpy as np
cluster_colors = np.array(['green','blue'])
centroid_colors = np.array(['black','orange'])
# scatter plot colored by cluster (1=green, 2=blue)
clusters = m.scatter(lon, lat, latlon=True, c=cluster_colors[X.cluster], s=80, alpha=0.8,label="Cluster 2")
#plot centre of gravity for each cluster (unweighted)
cog = m.scatter(centers['Longitude'].values, centers['Latitude'].values, latlon=True, marker='s', alpha=0.8, s=200, c=centroid_colors[X.cluster],label="CoG Cluster 1")
plt.legend(frameon=True,facecolor='white',handles=[cog,clusters])
plt.show()