【问题标题】:How to get percentage similarity between two float values dataframe in Python?如何在 Python 中获取两个浮点值数据框之间的百分比相似度?
【发布时间】:2021-07-29 13:10:23
【问题描述】:

这就是我的想象。这是一个示例表:

Col A Col B Similarity
5.0 5.0 1.000
3.8 2.3 0.700
1.3 6.7 0.300
2.7 8.5 0.350
2.9 2.9 1.000

我应该使用什么算法来做到这一点?

【问题讨论】:

  • 我只知道如何通过导入strsim和使用jarowinkler相似度来比较两个字符串。你能通过使用 ipynb 来证明这一点吗?

标签: python pandas dataframe anaconda jupyter


【解决方案1】:

如果您需要一个返回 1 到 0 之间的任意相似度函数,这确实很简单,但它会起作用。

df['similarity'] = df['Col A'] / df['Col B']
df.loc[df['similarity'] > 1, 'similarity'] = 1 / df['similarity']

【讨论】:

  • 我需要一个百分比。不是 1 和 0。像 7 和 8 之类的两个值之间应该接近,并且相距不远。它可能有 80% 相似。
  • 是的,这行得通。如果你想要 80 而不是 0.8,你可以乘以 100
  • 你能演示一下吗?
  • 您只需在末尾添加df['similarity'] *= 100
  • 这叫什么算法?
【解决方案2】:

你可以试试这样的:

x = df.max(axis=1)
y = abs(df['Col A']- df['Col B'])
df['Similarity'] = 1-(y/x)

df:

    Col A   Col B   Similarity
0   5.0     5.0     1.000000
1   3.8     2.3     0.605263
2   1.3     6.7     0.194030
3   2.7     8.5     0.317647
4   2.9     2.9     1.000000

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    • 1970-01-01
    • 1970-01-01
    • 2017-05-17
    相关资源
    最近更新 更多