使用熊猫如何迭代 2 个备用向量行,使用 scipy 计算并保存到新列

问题描述

祝大家圣诞节平安快乐;

我在 Pandas DataFrame 上有嵌入句子的稀疏向量,如下所示;

title_emb                                           text_emb
[[2,6294,4076,346,10231,16068,8654,1191...   [[2,11830,18726,16331,4474,4083,2654,41...
[[2,6451,6230,2513,107,12202,6538,4176,...   [[2,10082,29402,4039,21982,23,4029,6766...
...
[[2,8403,8569,4234,6706,4482,23033,4136...   [[2,145,4136,...
175846 rows × 2 columns

我想使用 scipy.spatial.distance.cdist 库添加不同种类的相似性,并遇到错误,我的给定数据不是二维数组。

看 scipy doc,cdist(XA,XB,'similarity_name') 其中 XA 和 XB 是 2-dim 稀疏向量

train['euclidean'] = cdist(train['title_emb'],train['text_emb'],'euclidean')
train['cosine'] = cdist(train['title_emb'],'cosine')
train['hamming'] = cdist(train['title_emb'],'hamming')
train['jaccard'] = cdist(train['title_emb'],'jaccard')

这给出了错误,但下面没有

print(cdist(train['title_emb'][175846],train['text_emb'][175846],'euclidean'))
print(cdist(train['title_emb'][175846],'cosine'))
print(cdist(train['title_emb'][175846],'jaccard'))

哪种方法应该是计算并将其保存到 DataFrame 的最快方法

  1. 使用for循环,保存到列表并放入DataFrame
  2. 使用 df.iterrow,保存到列表并放入 DataFrame
  3. 有没有办法修复上面的代码并将其直接保存到DataFrame?
  4. 其他方式,如 df.apply(function)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)