python - Kmeans 可视化错误 - 不可散列的类型:'numpy.ndarray'
问题描述
嗨,我unhashable type: 'numpy.ndarray'
在查看 kmeans 聚类结果时遇到类型错误。我不确定是不是因为我的数据是数据框?我的数据看起来像这种格式
df3
A B C D E
1 FALSE FALSE FALSE FALSE FALSE
2 TRUE FALSE FALSE FALSE FALSE
3 FALSE FALSE FALSE FALSE FALSE
4 FALSE FALSE FALSE TRUE FALSE
5 FALSE FALSE FALSE FALSE FALSE
6 FALSE FALSE FALSE FALSE FALSE
7 FALSE FALSE TRUE FALSE FALSE
8 TRUE FALSE TRUE FALSE FALSE
9 FALSE FALSE FALSE FALSE TRUE
10 FALSE TRUE FALSE TRUE TRUE
编码
fig= plt.figure(figsize=(8, 3))
fig.subplots_adjust(left=0.02, right=0.98, bottom=0.05, top=0.9)
colors= ['#4EACC5', '#FF9C34', '#4E9A06']
k_means_cluster_centers= np.sort(k_means.cluster_centers_, axis=0)
k_means_labels= pairwise_distances_argmin(df3, k_means_cluster_centers)
ax= fig.add_subplot(1, 3, 1)
for k, col in zip(range(n_clusters), colors):
my_members= k_means_labels == k
cluster_center= k_means_cluster_centers[k]
ax.plot(df3[my_members, 0], df3[my_members, 1],'w', markerfacecolor=col, marker='.')
ax.plot(cluster_center[0], cluster_center[1],'o', markerfacecolor=col, markeredgecolor='k', markersize=6)
ax.set_title('KMeans')
ax.set_xticks(())
ax.set_yticks(())
plt.text(-3.5, 1.8, 'inertia= %f' % (k_means.inertia_))
plt.show()
类型错误
TypeError Traceback (most recent call last)
<ipython-input-172-7f988487d56c> in <module>()
10 my_members= k_means_labels == k
11 cluster_center= k_means_cluster_centers[k]
---> 12 ax.plot(df3[my_members, 0], df3[my_members, 1],'w', markerfacecolor=col, marker='.')
13 ax.plot(cluster_center[0], cluster_center[1],'o', markerfacecolor=col, markeredgecolor='k', markersize=6)
关于如何解决这个问题的任何建议?
解决方案
推荐阅读
- python - 重新排序图的顶点。它应该像彼得森图一样排序
- c - 仅使用 stdio.h 中的函数循环 fgets 语句
- mysql - MySQL 作为 ADO NET 目标导致 System.NullReferenceException
- pandas - Pandas DataFrame .merge 不显示 Nan
- python - 如何避免这个 socket.error: [Errno 113] No route to host?
- node.js - 在猫鼬模式中填充嵌套对象的字段
- fluentd - 如何获得 fluentd / td-agent TLS/SSL 加密以使 in_forward 正常工作?
- r - 尝试将 R.exe 添加到 PATH
- r - R中的乘法列
- c# - C# - ConnectionString 属性尚未初始化