【发布时间】:2019-03-07 20:18:17
【问题描述】:
我有一个 pandas 数据框,其中行作为记录(患者)和 105 列作为特征。(每个患者的属性)
我想对患者进行聚类,而不是按照惯例对行进行聚类,而是对列进行聚类,以便我可以查看哪些特征与哪些其他特征相似或相关。我已经可以使用df.corr() 计算每个特征与其他所有特征的相关性。但是如何使用sklearn.cluster.KMeans 将它们聚类到 k=2,3,4... 组中?
我尝试了KMeans(n_clusters=2).fit(df.T),它确实对特征进行了聚类(因为我采用了矩阵的转置),但仅使用欧几里得距离函数,而不是根据它们的相关性。我更喜欢根据相关性对特征进行聚类。
这应该很容易,但非常感谢您的帮助。
【问题讨论】:
-
如果某个特征 A 与 B 相关并且 B 与 C 相关但 A 与 C 不相关,会发生什么?这种情况很容易出现。如果你有两个聚类(粗略地说,相关特征组和不相关特征组),那么 A 和 C 属于同一组(不相关特征)但 A 和 B 属于另一组(相关特征) .你会怎么处理?您的组之间不能有交集。
-
这可能有点愚蠢,但是 PCA 呢?如果多个特征是相关的,它们各自的由协方差矩阵分解提供的特征向量应该是“接近”的,对吗?您可以使用余弦相似度进行聚类吗?
标签: python machine-learning scikit-learn k-means sklearn-pandas