问题描述
我使用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 (将#修改为@)