如何为 kmeans 中的簇分配颜色?
How do I assign colors to clusters in kmeans?
我不断收到有关 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: list indices must be integers or slices, not float" 错误。
您收到的错误意味着您用来访问列表 rainbow
的索引不是整数,而是浮点数。在这种情况下,您正在尝试访问列表 rainbow
的元素 cluster - 1
。但是,表达式 cluster - 1
似乎是一个浮点数,这反过来意味着变量 cluster
不包含一个 int,而是一个浮点数。尝试确保您传递的是整数,例如将变量转换为整数:
color = rainbow[int(cluster)-1]
然而,这取决于变量的实际内容,如果 cluster
包含一个 nan-value,如 inf
,则将不起作用。在这种情况下(或所有情况下,实际上),您应该查看您拥有的数据并确保它是有意义的。由于您正在尝试执行 k-means 并接收浮点值,甚至 nan-values 用于您的集群标签,因此可能在集群过程的早期出现了错误。尝试通过打印其内容来查看 pittsburgh_merged
变量的实际内容。
我不断收到有关 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: list indices must be integers or slices, not float" 错误。
您收到的错误意味着您用来访问列表 rainbow
的索引不是整数,而是浮点数。在这种情况下,您正在尝试访问列表 rainbow
的元素 cluster - 1
。但是,表达式 cluster - 1
似乎是一个浮点数,这反过来意味着变量 cluster
不包含一个 int,而是一个浮点数。尝试确保您传递的是整数,例如将变量转换为整数:
color = rainbow[int(cluster)-1]
然而,这取决于变量的实际内容,如果 cluster
包含一个 nan-value,如 inf
,则将不起作用。在这种情况下(或所有情况下,实际上),您应该查看您拥有的数据并确保它是有意义的。由于您正在尝试执行 k-means 并接收浮点值,甚至 nan-values 用于您的集群标签,因此可能在集群过程的早期出现了错误。尝试通过打印其内容来查看 pittsburgh_merged
变量的实际内容。