【发布时间】:2021-11-25 06:01:17
【问题描述】:
我对 ML 和 pandas/scipy 还很陌生,所以请多多包涵。我正在尝试使用 sklearn.cluster KMEANS 模块运行 K-means 聚类,但我的聚类没有得到预期的结果。
我正在使用的数据集是一个 64 x 6830 的基因组数据矩阵。行是特定的癌细胞系,列是表达值。
我对数据进行了标准化,使标准差为 1,均值为 0。
在dataframe 中,数据如下所示:
0 1 2 3 4 5 \
Cancer Types
CNS 0.728671 1.607220 1.325688 1.355688 -0.604845 -0.220654
CNS 1.596418 1.753544 0.441686 0.654119 0.911898 1.648748
CNS 2.190290 -0.016217 -0.349092 0.266465 -1.311310 -0.019322
RENAL 0.682995 -0.375502 1.628079 -0.444299 1.244434 -0.019322
BREAST 1.151170 -0.581759 0.965145 1.138767 0.361351 -0.033703
... ... ... ... ... ... ...
MELANOMA -0.024977 -0.601719 0.209168 -0.342761 -0.459396 1.159911
MELANOMA -0.573084 0.875343 -0.186266 1.318766 2.117127 0.210772
MELANOMA 0.523130 -0.788015 -0.302571 -0.924296 0.039286 -1.169792
MELANOMA -0.070652 0.223307 -0.163005 -0.859681 0.039286 -0.019322
MELANOMA 0.842860 -0.322275 0.092864 -0.831988 -1.539873 -0.997222
这是我用来创建 KMEANS 集群的 python 代码
vals = standardize.values
from sklearn.cluster import KMeans
km = KMeans(n_clusters=4, n_init=150, random_state=123)
km.fit(vals)
fig, ax = plt.subplots(1, figsize=(14,5))
ax.scatter(vals[:,0], vals[:,1], c = km.labels_, cmap=plt.cm.plasma_r)
ax.set_title('K-Means Clustering Results with K=4')
ax.scatter(km.cluster_centers_[:,0], km.cluster_centers_[:,1], marker='+', s=100, c='k', linewidth=2)
plt.show()
如您所见,我的所有情节点都没有正确聚集在质心周围
【问题讨论】:
-
您的训练数据有 6 个特征,您只绘制了前两个特征。要绘制这样的 6 维空间,您必须将维度减少到 2。
-
嗨迈克尔,知道如何在不使用前两个功能创建 KMEANS 集群的情况下将维度减少到 2 吗?