微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用熊猫如何迭代 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 举报,一经查实,本站将立刻删除。