如何为kmeans中的群集分配颜色?

时间:2019-07-08 02:00:48

标签: python visualization k-means

我不断收到有关kmeans群集的错误消息。注意:我对所有内容和编码都非常陌生,因此我也希望以任何方式进行改进。我尝试亲自定义每种颜色,但这也不起作用。

# create map
map_clusters = folium.Map(location=[latitude, longitude], zoom_start=11)

# set color scheme for the clusters
x = np.arange(kclusters)
ys = [i + x + (i*x)**2 for i in range(kclusters)]
colors_array = cm.rainbow(np.linspace(0, 1, len(ys)))
rainbow = [colors.rgb2hex(i) for i in colors_array]

# add markers to the map
markers_colors = []
for lat, lon, poi, cluster in zip(pittsburgh_merged['Latitude'], 
pittsburgh_merged['Longitude'], pittsburgh_merged['Neighborhood'], 
pittsburgh_merged['Cluster Labels']):
label = folium.Popup(str(poi) + ' Cluster ' + str(cluster), 
parse_html=True)
folium.CircleMarker(
[lat, lon],
radius=5,
popup=label,
color=rainbow[cluster-1],
fill=True,
fill_color=rainbow[cluster-1],
fill_opacity=0.7).add_to(map_clusters)

map_clusters

我希望map_clusters的输出可见。它应该是匹兹堡的地图,其场地由颜色组成。因此,彩虹任务。但是,对于颜色和fill_color分配,我一直收到“ TypeError:列表索引必须是整数或切片,而不是浮点数”错误。

1 个答案:

答案 0 :(得分:1)

您收到的错误意味着您用于访问列表rainbow的索引不是整数,而是浮点数。在这种情况下,您尝试访问列表cluster - 1中的元素rainbow。但是,表达式cluster - 1似乎是一个浮点数,这反过来意味着变量cluster不包含整数,而是一个浮点数。尝试确保传入整数,例如,将变量强制转换为整数:

color = rainbow[int(cluster)-1]

但是,这取决于变量的实际内容,并且如果cluster包含类似inf的nan值,则将不起作用。在这种情况下(或实际上,在所有情况下),您应该查看所拥有的数据,并确保这是有道理的。由于您正在尝试进行k均值运算并为集群标签接收浮点值甚至是nan值,因此在集群过程中可能会出现问题。尝试通过打印pittsburgh_merged变量的内容来查看其实际内容。