我的数据是z分数矩阵。每行的平均值为零。我正在尝试执行kmeans集群分析,以便将每一行分配给一个集群。举一个非常简单的例子,在矩阵中:
[0, -1, 1, 0]
[0, -1, 1, 0]
[0, 1, -1, 0]
[1, 1, -1, -1]
[-1, -1, 1, 1]
(除了实际的z得分数据,每行的方差为1。)
Python应该认识到前两行是在一个集群中。我可以用sklearn.cluster.KMeans做到这一点。但是,现在我希望它检测“反相关”并将第三行与前两行分类,因为它只是它们的负面因素。如果我告诉它找到两个簇,它应该找到一个有前三行,另一个有底两个,因为底部两个也是彼此的负片。
一种可能的方法(可能)是如果我可以使用用户定义的拟合优度函数将两点r1和r2的距离定义为sqrt的最小值((r1 + r2)** 2)和sqrt((r1-r2)** 2)。我可能想知道给定行是否已在其群集中用作其正面或负面版本。
感谢您提供任何帮助。