【问题标题】:Sort K-means label from low to high based on data根据数据对 K-means 标签从低到高排序
【发布时间】:2020-04-15 19:03:08
【问题描述】:

我有一个“压力”的数据系列。我用 scikit 执行了一个 3 簇 K-means。我需要将分配每个数据的集群的标签从低到高排序,因此“低压”值具有较低的标签 (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】:

标准合身。结果是无序中心。

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]

【讨论】:

    猜你喜欢
    • 2018-12-26
    • 2017-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    相关资源
    最近更新 更多