使用 SciPy 计算汉明距离
scipyscientific computingprogramming
汉明距离计算两个二进制向量之间的距离。大多数情况下,当我们对数据的分类列使用独热编码时,我们会找到二进制字符串。在独热编码中,整数变量将被删除,并且将为每个唯一整数值添加一个新的二进制变量。例如,如果一列的类别为"长度"、"宽度"和"宽度"。我们可以将每个示例独热编码为一个位串,每列一位,如下所示 −
长度 = [1, 0, 0]
宽度 = [0, 1, 0]
宽度 = [0, 0, 1]
上述任何两个类别之间的汉明距离都可以计算为两个二进制字符串之间的位数之和或平均位数差异。我们可以看到,长度和宽度类别之间的汉明差约为 2/3 或 0.666,因为 3 个位置中有 2 个不同。
汉明距离还将决定分类变量之间的相似性。例如,假设我们有两个字符串 −
“Google” 和 “Goagle”
两个字符串的长度相同,因此我们可以计算它们之间的汉明距离。我们将从逐个匹配字符开始。两个字符串中的第一个和第二个字符相同。第三个字符不同,但其余所有字符也相同,因此上述字符串之间的汉明距离为 1。
汉明距离仅适用于相同长度的字符串。字符串之间的汉明距离越大,字符串之间的差异就越大,反之亦然。
让我们看看如何使用 SciPy 库 − 计算两个字符串的汉明距离
示例
# 导入 SciPy 库 from scipy.spatial import distance # Defining the strings A = 'Google' B = 'Goagle' A, B # Computing the Hamming distance hamming_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