如何在kmeans中为簇分配颜色?

2024-04-19 18:37:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我不断收到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_集群的输出是可见的。它应该是匹兹堡的地图,有按颜色排列的场馆。因此彩虹任务。但是,对于颜色和填充颜色分配,我一直收到“TypeError:list index must be integer or slices,not float”错误。在


Tags: inmapfor颜色错误集群mergedfill
1条回答
网友
1楼 · 发布于 2024-04-19 18:37:06

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

color = rainbow[int(cluster)-1]

但是,这取决于变量的实际内容,如果cluster包含一个类似于inf的nan值,那么这将不起作用。在这种情况下(实际上是所有情况),您应该查看一下您拥有的数据,并确保这些数据是合理的。由于您正在尝试使用k-means并为集群标签接收浮点值甚至nan值,所以在集群过程的早期可能出了问题。{Try}查看其实际内容。在

相关问题 更多 >