使用matplotlib可视化三维聚类

使用matplotlib可视化三维聚类,matplotlib,cluster-analysis,visualization,Matplotlib,Cluster Analysis,Visualization,我将3个功能特性Feature1、Feature2和Feature3进行了集群,并提出了2个集群。 我正在尝试使用matplotlib可视化三维集群 在下表中,有三个执行集群的特性。集群数量为2 Feature1 Feature2 Feature3 ClusterIndex 0 1.349656e-09 1.000000 1.090542e-09 0 1 1.029752e-07 1.000000 6.040669e-08

我将3个功能特性Feature1、Feature2和Feature3进行了集群,并提出了2个集群。 我正在尝试使用matplotlib可视化三维集群

在下表中,有三个执行集群的特性。集群数量为2

    Feature1        Feature2    Feature3    ClusterIndex
  0 1.349656e-09    1.000000    1.090542e-09    0
  1 1.029752e-07    1.000000    6.040669e-08    0
  2 2.311729e-07    1.000000    1.568289e-11    0
  3 1.455860e-08    6.05e-08    1.000000        1
  4 3.095807e-07    2.07e-07    1.000000        1
已尝试此代码:

   fig = plt.figure()
   ax = fig.add_subplot(111, projection='3d')
   x = np.array(df['Feature1'])
   y = np.array(df['Feature2'])
   z = np.array(df['Feature3'])
   ax.scatter(x,y,z, marker=colormap[kmeans.labels_], s=40)
但是,我得到了错误
“ValueError:无法将字符串转换为float:red”
。因此,标记部分就是我得到错误的地方

通过在散点图中绘制点并用簇标签区分,簇的二维可视化非常简单

只是想知道有没有一种方法可以实现集群的三维可视化


如有任何建议,将不胜感激

原则上,问题中的代码应该有效。然而,目前尚不清楚标记=colormap[kmeans.labels.会做什么,以及为什么需要它

3D散点图的工作原理与2D版本完全相同

marker参数需要一个标记字符串,如
“s”
“o”
来确定标记形状。
可以使用
c
参数设置颜色。您可以提供单一颜色或数组/颜色列表。在下面的示例中,我们只需将聚类索引提供给
c
,并使用颜色映射

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import pandas as pd
import numpy as np

v = np.random.rand(10,4)
v[:,3] = np.random.randint(0,2,size=10)
df = pd.DataFrame(v, columns=['Feature1', 'Feature2','Feature3',"Cluster"])
print (df)

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = np.array(df['Feature1'])
y = np.array(df['Feature2'])
z = np.array(df['Feature3'])

ax.scatter(x,y,z, marker="s", c=df["Cluster"], s=40, cmap="RdBu")

plt.show()

我收到错误“ValueError:无法将字符串转换为浮点:红色”。标记部分是我得到错误的地方。它无法将字符串转换为浮点数。打字没用。在二维打印中,它可以工作,但不确定为什么它不能用于三维打印。那么,什么是
colormap
,什么是
kmeans.labels?@ImportanceOfBeingErnest:kmeans.labels是类似于0和1的簇索引(因为我有两个簇)。Colormap将标签转换为颜色。