使用 SciPy 计算汉明距离
汉明距离计算两个二进制向量之间的距离。当我们对数据的分类列使用独热编码时,我们通常会找到二进制字符串。在独热编码中,整数变量被移除,并且对于每个唯一的整数值,都会添加一个新的二进制变量。例如,如果一列包含类别“长度”、“宽度”和“广度”。我们可能会将每个示例作为如下所示的每个列的一个位的位串进行独热编码:
长度 = [1, 0, 0]
宽度 = [0, 1, 0]
广度 = [0, 0, 1]
上面提到的任何两个类别之间的汉明距离,可以计算为两个二进制字符串之间位差异的总和或平均数。我们可以看到,长度和宽度类别之间的汉明距离约为 2/3 或 0.666,因为 3 个位置中有 2 个是不同的。
汉明距离也将决定分类变量之间的相似性。例如,假设我们有两个字符串:
“Google” 和 “Goagle”
这两个字符串的长度相同,因此我们可以计算它们之间的汉明距离。我们将从逐一匹配字符开始。两个字符串中的第一个和第二个字符相同。第三个字符不同,但其余所有字符也相同,因此上述字符串之间的汉明距离为 1。
汉明距离仅适用于长度相同的字符串。字符串之间的汉明距离越大,字符串的差异就越大,反之亦然。
让我们看看如何使用 SciPy 库计算两个字符串的汉明距离:
示例
# Importing the SciPy library 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
广告