Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 聚类时处理维度_Image_Machine Learning_Cluster Analysis_Dimension - Fatal编程技术网

Image 聚类时处理维度

Image 聚类时处理维度,image,machine-learning,cluster-analysis,dimension,Image,Machine Learning,Cluster Analysis,Dimension,当对象由不同大小的向量表示时,如何执行聚类分析(例如kmeans、complete link等)?例如,对象1由4维向量表示,对象2由6维向量表示,对象3由3维向量表示,等等 有没有办法规范化对象的表示?你有什么建议 谢谢大家! 简而言之,不,这是不可能的。可以将对象的向量表示为相同(高维空间)的成员。仅当对象的特征中存在某些重叠时,此操作才有效。考虑以下向量: object1: a, b, c, d object2: b, d, e object2: a, d 所有特征的集合是{a,b

当对象由不同大小的向量表示时,如何执行聚类分析(例如kmeans、complete link等)?例如,对象1由4维向量表示,对象2由6维向量表示,对象3由3维向量表示,等等

有没有办法规范化对象的表示?你有什么建议


谢谢大家!

简而言之,不,这是不可能的。可以将对象的向量表示为相同(高维空间)的成员。仅当对象的特征中存在某些重叠时,此操作才有效。考虑以下向量:

 object1: a, b, c, d
 object2: b, d, e
 object2: a, d
所有特征的集合是
{a,b,c,d,e}
,三个对象可以表示为:

 object1: a, b, c, d, 0
 object2: 0, b, 0, d, e
 object2: a, 0, 0, d, 0
0
是一个占位符,指示此对象不具有特定功能。您的对象现在位于相同的5维空间中,并且可以聚集

注意:任何sane矢量库实际上都将以稀疏格式存储矢量,如我的第一个示例中的格式。如果只有少数功能是非零的,那么这将为您提供非常小的内存占用。我的第二个示例的格式很密集。有些库需要密集输入,有些库可以自动从一个库转换到另一个库。在任何情况下,我认为您不太可能必须手动执行我上面所做的转换


编辑:特征向量需要作为整数列表结束。列表中的每个位置对应一条特定的信息。您可以从以下功能开始:

cat- weight 4 kg, is very cute
whale- weight 3000kg, not very cute, lives in ocean
rat- weight 0.3 kg, not cute at all, lives in sewers
因此,
cat
在这里由两个特征表示,或者一个维度为2的向量表示。此信息转换为下表:

        weight(kg)    cuteness(%)     lives_in_sewers?    lives_in_ocean?
 cat        4             8                  0                  0
 whale    3000            3                  0                  1
 rat       0.2            2                  1                  0
特征向量为:

cat = [4, 8, 0, 0]
whale = [3000m 3, 0, 1]
rat = [0.2, 2, 1, 0]

因此,根据您的示例,如果对象2中的特征a是一个100维向量,那么特征a应该是一个包含100个零的向量?不,每个特征都是一个实数(您也可以使用一个热编码的离散值特征)。目标是使所有向量最终成为一个数字列表,其中列表中的每个位置对应一个特定的特征。我将编辑我的答案并添加一个更详细的示例。