2017-07-06 18 views
0

私は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) 

答えて

0

すでに文字列の配列との間の類似性を計算する方法を知っている場合は、なぜあなたの整数を文字列に変換しませんか?

>>> f = lambda s: int(s) if s.isnumeric() else s 
    >>> f('3') 
    3 
    >>>> f('a') 
    'a' 
:文字列にデータ項目D変換あなたの場合

は、

str(d) 

文字列又は整数のデータ項目Dをバック変換を用いて行うことができるで行われます

関連する問題