SK-Learn针对复杂矢量具有复数的数据点的分层聚类

问题描述

我使用Python 3.8和SciKit-Learn(SK-Learn)软件包。我也使用NumPy和SciPy软件包。

我想使用自然支持复数和复范数的欧几里得距离函数use Doctrine\Common\DataFixtures\Purger\ORmpurger;对复数的向量进行聚类:

np.linalg.norm(vec1 - vec2)

由于我不知道高级集群的数量,因此我使用分层集群:

import numpy as np

M = 4

x1 = np.random.random(M)
x2 = np.random.random(M)
y1 = np.random.random(M)
y2 = np.random.random(M)

vec1 = x1 + 1j*y1
vec2 = x2 + 1j*y2

d = np.sqrt(np.sum( (x1-x2)**2 + (y1-y2)**2 ))
d = np.linalg.norm(vec1 - vec2)

但是,当我尝试运行它时,我收到一条错误消息,指出

”发生了异常:ValueError 不支持复杂数据”

所以我的问题是,一般而言,SKLearn是否特别是SKLearn的层次结构集群支持复杂数据,如果不能,则如何克服?

我有一个想法是将昏暗import numpy as np from sklearn.cluster import AgglomerativeClustering TH = 0.1 # some value,needed to be optimized for the typical data cluster = AgglomerativeClustering(n_clusters=None,affinity='euclidean',linkage='single',compute_full_tree=True,distance_threshold=TH) data = # a matrix of 4 rows,M columns,complex elements cluster.fit_predict(data) num_clusters = 1+np.amax(cluster.labels_) 的每个复数向量转换为昏暗M的实数向量,并继续使用欧几里德度量(距离)。等于将复杂的点聚类并给出正确的结果吗?

另外,如果您知道在不指定簇数(算法应自动确定)的情况下对小数据(通常包含4个数据点)进行聚类的好方法,请发表评论

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)