使用 SciPy 计算汉明距离
汉明距离计算两个二进制向量之间的距离。大多数情况下,当我们对分类数据列使用单热编码时,我们会找到二进制字符串。在 one-hot 编码中,整数变量被删除,并且将为每个唯一的整数值添加一个新的二进制变量。例如,如果一列的类别为“长度”、“宽度”和“宽度”。我们可以将每个示例一次性编码为每列一位的位串,如下所示 -
长度 = [1, 0, 0]
宽度 = [0, 1, 0]
宽度 = [0, 0, 1]
上面提到的两个类别中的任何一个之间的汉明距离可以计算为两个二进制字符串之间位差的总和或平均数。我们可以看到 Length 和 Width 类别之间的汉明差异约为 2/3 或 0.666,因为 3 个位置中有 2 个不同。
汉明距离还将决定分类变量之间的相似性。例如,假设我们有两个字符串 -
“谷歌”和“ Goagle ”
两个字符串的长度相同,因此我们可以计算它们之间的汉明距离。我们将从一一匹配字符开始。两个字符串中的第一个和第二个字符是相同的。第三个字符不同,但其余所有字符也相同,因此上述字符串之间的汉明距离为 1。
汉明距离仅适用于相同长度的字符串。弦之间的汉明距离越大,弦越不同,反之亦然。
让我们看看如何使用 SciPy 库计算两个字符串的汉明距离 -
示例
# Importing the SciPy libraryfromscipy.spatialimport distance# Defining the stringsA = 'Google'B = 'Goagle'A, B# Computing the Hamming distancehamming_distance = distance.hamming(list(A), list(B))*len(A)print('Hamming Distance b/w', A, 'and', B, 'is: ', hamming_distance)
输出结果
Hamming Distance b/w Google and Goagle is: 1.0