计算多类型数据点的距离

时间:2013-10-17 00:16:36

标签: matlab similarity knn

我想在Matlab中通过KNN方法对数据集进行分类,但是我在计算具有不同数据类型的数据点的距离时遇到了问题。

我的数据集中的每个点都有各种各样的功能,数字和字符串类型类似于X{Size,Lenght,Age,Coating,PipeType,Location} 前三个特征具有数字,后三个具有字符串(一个或两个字)值。

如果我将字符串要素映射到二进制代码,例如,如果我考虑两位{Concrete encased,Gunite,Tar Coating,Poliken Coating},则涂层值包括{00,01,10,11} 如果我像这样计算X和Y的距离是合乎逻辑的:

X:{Size,Lenght,Age,Coating,PipeType,Location}
Y:{Size,Lenght,Age,Coating,PipeType,Location}

Distance= Euclidean Distance (X,Y) on {Size,Lenght,Age} 
            + Hamming Distance (X,Y) on {Coating}
            + Hamming Distance (X,Y) on {PipeType}
            + Hamming Distance (X,Y) on {Location}

Distance= Euclidean Distance (X,Y) on {Size,Lenght,Age} 
          + {1 if a x and y have similar coating values and 0 otherwise}
          + ...

我非常感谢你的建议。 该领域的建议文章和文件也很有用。

由于 Mahsa

1 个答案:

答案 0 :(得分:0)

对于二元向量,汉明距离和欧几里德距离实际上是相同的 因此,您可以将'Coating'要素转换为长度为4的二进制向量

coating_vec( ii ) == 1 iff instance_coating == Coating_type{ii}

也就是说,对于涂层值为“Tar”(第三个可能的涂层值)的实例,涂层的二元特征向量为[0 0 1 0]

PipeTypeLocation执行相同的操作,您将获得长度为3 + 4 + numPossible(PipeType) + numPossible(Location)的要素向量。取这些组合特征向量之间的Euslidean距离应该可以帮到你。