Python 如何检查数据集的模式是否相似

Python 如何检查数据集的模式是否相似,python,compare,similarity,Python,Compare,Similarity,我正在使用python,我想检查一组数据集的模式与一个特定数据集的模式是否相似,例如 [1,11,21,31,41] 类似于 [1,10,24,32,44] 我想设置一些阈值来确定相似性,例如,我想将相似性百分比设置为90% 请帮帮我,我已经花了一周的时间在这个编程上了我的解决方案: Python 3.6.5 (default, Apr 1 2018, 05:46:30) Type 'copyright', 'credits' or 'license' for more informati

我正在使用python,我想检查一组数据集的模式与一个特定数据集的模式是否相似,例如

[1,11,21,31,41]
类似于

[1,10,24,32,44]
我想设置一些阈值来确定相似性,例如,我想将相似性百分比设置为90%

请帮帮我,我已经花了一周的时间在这个编程上了

我的解决方案:

Python 3.6.5 (default, Apr  1 2018, 05:46:30)
Type 'copyright', 'credits' or 'license' for more information
IPython 6.4.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: def is_similar(a, b, percent=90/100):
   ...:     if len(a) != len(b):
   ...:         return False
   ...:     for i, j in zip(a, b):
   ...:         if 1 - abs(i-j)/i < percent:
   ...:             return False
   ...:     return True
   ...:
   ...:

In [2]: is_similar([1,11,21,31,41], [1,10,24,32,44])
Out[2]: False

In [3]: is_similar([1,11,21,31,41], [1,10,23,32,44])
Out[3]: True
Python 3.6.5(默认,2018年4月1日05:46:30)
有关详细信息,请键入“版权”、“信用”或“许可证”
IPython 6.4.0——一种增强的交互式Python。键入“?”以获取帮助。
在[1]中:def与之类似(a,b,百分比=90/100):
…:如果len(a)!=len(b):
…:返回False
…:对于拉链中的i,j(a,b):
…:如果1-abs(i-j)/i<百分比:
…:返回False
…:返回True
...:
...:
在[2]中:与[1,11,21,31,41]、[1,10,24,32,44]相似
Out[2]:False
在[3]中:与[1,11,21,31,41]、[1,10,23,32,44]相似
Out[3]:正确
data1=[1,11,21,31,41]
数据2=[1,10,24,32,44]
totalDif=0

对于(int i=0;i你如何定义你的问题中的相似性?90%是什么?你应该定义你的相似性概念,然后你就可以进行编程。到目前为止你尝试了什么?@SpghttCd我对相似性的定义是,它们的模式看起来是一样的,例如[1,5,10,15,20]与[5,11,14,19,27]相似,但与[5,1,8,3,27]不相似我试着用sklearn.neights来寻找最近的邻居,但是这似乎不起作用。我知道你的基本意思,但这不是一个可计算、可测量的相似性定义,它只是一个模糊的口头描述,可能会暗示有数学背景的人明白你的意思。你需要的是明确定义了如何以“百分比”计算一对数组的请求相似性属性(除了简单的解决方案外,相同数组的两倍将导致“100%”)-或者一个库,它为你做这件事,因为其他人已经创建了这个相似性度量算法。换句话说:为什么在你的例子中有90%?
1-abs(i-j)/i
为什么
i
而不是
j
?如果
i=90
j=100
,一个会通过测试,另一个不会。可能使用
i
j
min
avg
data1=[1,11,21,31,41]
data2=[1,10,24,32,44]    
totalDif = 0

for (int i=0; i<len(data1); i++):
    difference = abs(data1[i] - data2[i])
    totalDif += difference