用python求两个数的相似性

2024-09-30 06:30:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在研究Case-Based Reasoning algorithms,我需要得到两个数字(整数或浮点)的相似性。在

对于字符串,我使用Levenshtein lib,它处理得很好,但是我不知道任何Python库来计算两个数字的相似性,有一个吗? 有人知道吗? 结果应该在0(不同)和1(完全匹配)之间,如Levenshtein.ratio()。在

@更新1:

使用左旋睾酮比率我们得到两个字符串的相似度比,0表示完全不同,1完全匹配,0和1之间的任何一个都是相似系数。 示例:

>>> import Levenshtein
>>> Levenshtein.ratio("This is a test","This is a test with similarity")
0.6363636363636364
>>> Levenshtein.ratio("This is a test","This is another test")
0.8235294117647058
>>> Levenshtein.ratio("This is a test","This is a test")
1.0
>>> 

我需要这样的东西,但是要有数字。 例如,5与6有n%的相似性。数字5.4与5.8有n%的相似性。 我不知道我的例子是否清楚。在

@更新2:

让我举一个真实的例子。假设我在100台服务器上寻找类似版本的centoslinux发行版。CentOS Linux版本号类似于5.6、5.7、6.5。那么,数字5.7和6.5有多接近?不是很近,我们有很多版本(数字)。但是有一个相似系数,比如说40%(或0.4),使用一些类似的算法,比如Levenshtein。在

@更新3: 我得到了这个问题的答案。我在这里发帖是为了帮助更多的人:

^{pr2}$

Tags: 字符串test版本is数字this相似性例子
1条回答
网友
1楼 · 发布于 2024-09-30 06:30:01

从这个链接,我看到伊恩·沃森的幻灯片显示了三种评估数字“相似性”的方法。其中,可从numpy获得“step function”选项:

In [1]: from numpy import allclose

In [2]: a = 0.3 + 1e-9

In [3]: a == 0.3
Out[3]: False

In [4]: allclose(a, 0.3)
Out[4]: True

为了获得数值输出,根据相似性的要求,我们做了一个更改:

^{pr2}$

如果愿意,可以使用float代替{}:

^{3}$

allclose采用可选参数rtol和{},以便分别指定要使用的相对或绝对公差。关于allclose的完整文档是here。在

相关问题 更多 >

    热门问题