Python K-means聚类后如何得到数据集子集

Python K-means聚类后如何得到数据集子集,python,scikit-learn,cluster-analysis,k-means,Python,Scikit Learn,Cluster Analysis,K Means,我有一个数据集val_lab,如下所示: [[ 52.85560436 -23.61958699 34.40273147] [ 70.44462451 -2.74272277 80.32988099] [ 38.32222473 -11.22753928 24.09593474] [ 84.83470029 -7.73898094 28.03636332] [ 76.48246093 0.13784934 76.23718213] [ 61.21154496 2.

我有一个数据集
val_lab
,如下所示:

[[ 52.85560436 -23.61958699  34.40273147]
 [ 70.44462451  -2.74272277  80.32988099]
 [ 38.32222473 -11.22753928  24.09593474]
 [ 84.83470029  -7.73898094  28.03636332]
 [ 76.48246093   0.13784934  76.23718213]
 [ 61.21154496   2.24080039   9.38927616]
 [ 39.88027333  37.32959609 -19.0592156 ]...]
我使用sklearn的K-means聚类,得到了预测值:

from sklearn.cluster import KMeans
y_pred = KMeans(n_clusters= 5 , random_state=0 ).fit_predict(val_lab)
>>>[3 0 1 3 0 3 4 1 4 1 1 1 1 1 1 4 0 3 1 0 3...]
现在我想得到每个集群中的值,例如,如果
y\u pred=3
我得到:

(第0行和第3行)

现在,我的想法是:

val_lab_3 = []
for i in range(y_pred.shape[0]):
       if y_pred[i] == 3:
              val_lab_3.append(val_lab[i,:]) 

有没有更好的办法,因为我想得到所有集群中的子集。这太复杂了,特别是假设有更多的簇?

如果我理解正确,上面的行被分类为0,1,2,3,4(我看到的是5个簇),你想把它们全部放在一起

熊猫将是一个很好的工具。您可以使用此集群预测并将其设为新列,然后只需选择集群标签为3的行

e、 g.(假设您调用新列
preds
,并且您原来的numpy数组名为
val\u lab
):


如果我理解正确,你上面的行被分类为0,1,2,3,4(我看到的是5个簇),你想把它们都放在一起

熊猫将是一个很好的工具。您可以使用此集群预测并将其设为新列,然后只需选择集群标签为3的行

e、 g.(假设您调用新列
preds
,并且您原来的numpy数组名为
val\u lab
):


我假设
val\u lab
是一个
numpy
数组。那么,

val_lab[y_pred == 3, :]

将工作。

我假设
val\u lab
是一个
numpy
数组。那么,

val_lab[y_pred == 3, :]
会有用的

val_lab[y_pred == 3, :]