你如何衡量2系列数据之间的相似性?

时间:2011-12-03 21:14:40

标签: similarity

我需要在两个数据阵列之间找到相似性度量。 您可以随意调用相似度量,差异,相关性等等。

例如:

 1, 2, 3, 4, 5 < Series 1
 2, 3, 4, 5, 6 < Series 2

应该比这两个系列更加相似:

 1, 2, 3, 4, 5 < Series 1
 1, 1, 5, 8, 7 < Series 2

有什么建议吗?

是否有可用的源代码?

3 个答案:

答案 0 :(得分:2)

您可以计算sample Pearson product-moment correlation coefficient:“上述公式建议使用方便的单程算法来计算样本相关性”。写一个循环来计算sum(xi),sum(yi),sum(xi ^ 2),sum(yi ^ 2)和sum(xi * yi)。然后将这些总和插入公式中。

答案 1 :(得分:0)

如果您对相似性的定义是多少相同的元素,则可以使用set intersection:

std::multiset<int> Series1 = std::multiset({ 1, 2, 3, 4, 5 });
std::multiset<int> Series2 = std::multiset({ 2, 3, 4, 5, 6 });
std::multiset<int> Intersection;

std::set_intersection(Series1.begin(), Series1.end(),
                      Series2.begin(), Series2.end(),
                      std::back_inserter(Intersection));

int similarity = Intersection.size(); // = 4

答案 2 :(得分:0)

另一种方法是计算互信息,在matlab和C中有一个工具箱 http://www.cs.man.ac.uk/~pococka4/MIToolbox.html