我有一个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')' –