根据数据从低到高排序K-means标签
Sort K-means label from low to high based on data
我有一个"pressure"的数据系列。我用 scikit 执行了 3 簇 K-means。我需要分配每个数据簇的标签从低到高排序,因此 'low pressure' 值具有较低的标签 (0),最高压力值具有最高的标签 (2)。我将标签分配给了 datafrae
这是我使用的代码:
means = KMeans(n_clusters=3,random_state=3425)
dfNS["cB0"] = kmeans.fit_predict(dfNS[["B0"]])
标准版型。结果无序中心。
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]
我有一个"pressure"的数据系列。我用 scikit 执行了 3 簇 K-means。我需要分配每个数据簇的标签从低到高排序,因此 'low pressure' 值具有较低的标签 (0),最高压力值具有最高的标签 (2)。我将标签分配给了 datafrae
这是我使用的代码:
means = KMeans(n_clusters=3,random_state=3425)
dfNS["cB0"] = kmeans.fit_predict(dfNS[["B0"]])
标准版型。结果无序中心。
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]