K表示簇列

K means cluster columns

我接到了以下任务:
您想将场传感器的数量减少到 20 个。您现在应该从上一个问题中得到一个包含所有加载向量 (pca.components_) 的数组,每个主成分一个向量,有 137 个元素(每个传感器一个) ).使用聚类对行为相同的传感器进行分组。

我的数据: 由 137 个不同的传感器和 8784 条线组成。

在我对数据进行标准化后,我看到 16 列的标准差为 0,因此将它们删除(这意味着它们每次测量的值都相同,对吧?)

我运行下面的代码:

from sklearn.decomposition import PCA

# Do your PCA here.
pca = PCA(n_components=120)
pca.fit(data['std'])

from sklearn.cluster import KMeans
X_pca = pca.transform(data['std'])

# Apply your clustering here
km = KMeans(n_clusters=20, init='k-means++',n_init=10, verbose=0);
km.fit(X_pca);
cluster_pred = km.predict(X_pca);

plt.figure(figsize=(10,5))
plt.scatter(X_pca[:,0], X_pca[:,1], c=cluster_pred, s=20, cmap='viridis')
plt.show()

现在我最终将所有行聚类在一起。我该如何更改它,将每一列聚类,这样我就可以 select 来自每个聚类的传感器?
对于 selection,我应该只取每个簇的中心吗?

我不确定数据['std'] 的样子,所以我无法运行 你的代码。无论如何,按照你说的,你的问题可以通过如下方式转置你的数据来解决:

from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
import numpy as np

transposed_data = np.transpose(data['std']) 
# In case it doesnt work, try with np.transpose(np.asarray(data['std']))

# Do your PCA here.
pca = PCA(n_components=120)
pca.fit(transposed_data)

X_pca = pca.transform(transposed_data)

# Apply your clustering here
km = KMeans(n_clusters=20, init='k-means++',n_init=10, verbose=0);
km.fit(X_pca);
cluster_pred = km.predict(X_pca);

plt.figure(figsize=(10,5))
plt.scatter(X_pca[:,0], X_pca[:,1], c=cluster_pred, s=20, cmap='viridis')
plt.show()