我有一個csv文件,其中包含一個id,然後是4000個額外的浮點數列。 這樣一行看起來像:如何在字典中正確使用sklearn餘弦似性
12323,3.8,3.1,4.2,.....
我想比較與其他行的單排FID使用餘弦距離度量該行重新最相似。目前,我將numpy數組的每一行分別與單個項目進行比較。我希望能夠一次比較所有項目,而不是一次比較一個項目。問題是我使用字典,因爲我使用鍵來引用每個對象。正如你在下面的代碼中看到的那樣,dict將id存儲爲鍵,然後該值是浮點數的數組。
#item is the single item
dict= {}
scores = {}
with open(file, 'rb') as csvfile:
reader = csv.reader(csvfile, delimiter=',', quotechar='|')
for row in reader:
dict[row[1]] = np.loadtxt(row[2:],delimiter=',')
for k,v in dict.iteritems():
score = cosine_similarity(item,v)
scores[k] = score
sorted_scores = sorted(scores.items(), key=operator.itemgetter(1))
print(sorted_scores[-args.k:])
我怎樣才能得到相同的結果,但沒有使用for循環來單獨評分每一行。通過閱讀距離度量標準,我應該能夠將整行數組傳遞到cosine_similarity。
如果你錯過了它,我更新了我的代碼,並解釋它根據您的評論是如何工作的。你實際上可以按照你的說法做:'dist = pairwise.pairwise_distances(X [:,1:],main_object,metric ='cosine')' –