根据数据将K均值标签从低到高排序

问题描述 投票:0回答:1

我有一个“压力”数据系列。我用scikit执行了3个聚类K均值。我需要用于分配从低到高排序的每个数据的簇的标签,因此“低压”值具有较低的标签(0),而最高压力值具有最高的标签(2)。我将标签分配给了数据帧

这是我使用的代码:

means = KMeans(n_clusters=3,random_state=3425)
dfNS["cB0"] = kmeans.fit_predict(dfNS[["B0"]])
python scikit-learn cluster-analysis k-means
1个回答
0
投票

标准版。结果出现在无序中心。

import numpy as np
from sklearn.cluster import KMeans

means = KMeans(n_clusters=3,random_state=3425)
cB0 = means.fit_predict(np.arange(100).reshape(-1, 1))
print(cB0)

输出:

[2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]

使用

ord_idx=np.argsort(means.cluster_centers_.flatten())

cntrs = np.zeros_like(cB0)-1
for i in np.arange(3):
    cntrs[cB0==ord_idx[i]]=i

print(cntrs)

输出:


[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2]
© www.soinside.com 2019 - 2024. All rights reserved.