在列表列表之间获得相似性度量

时间:2017-07-06 08:43:31

标签: python-3.x

我正在学习KNN算法。我目前正处于通过再次计算训练数据集的每个实例的相似性度量来获得测试实例的最近邻居的阶段。我在网上遇到的大部分内容都比较了字符串序列或字符串列表之间的相似之处,我所拥有的是包含字符串和整数的列表列表。如何针对我的训练数据集的每个实例获取testInstance的相似性度量

def getNeighbours(trainingSet,testInstance,K):
distances = []
for x in range (len(trainingSet)):
    dist = distance.levenshtein(testInstance,trainingSet)
    distances.append((trainingSet[x],dist.ratio()))
distances.sort(key = operator.itemgetter(1))
neighbors = []
for x in range(K):
    neighbors.append(distances[x][0])
return neighbors

trainSet = [['low', 'low', 4, 'more', 'med', 'high', 'vgood'],['low', 'low', '5more', 4, 'big', 'low', 'unacc'],['low', 'med', 3, 4, 'med', 'high', 'good']]
test_Instance = ['low', 'med', 3, 4, 'med', 'high', 'good']

neigbors = getNeighbours(trainSet,test_Instance,1)
print(neigbors)

1 个答案:

答案 0 :(得分:0)

如果您已经知道如何计算字符串序列之间的相似性,那么为什么不将整数转换为字符串?

在您的情况下,使用

将数据项d转换为字符串
    str(d)

并将数据项d转换回字符串或整数可以通过以下方式完成:

    >>> f = lambda s: int(s) if s.isnumeric() else s
    >>> f('3')
    3
    >>>> f('a')
    'a'