Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Similarity 如何衡量两组数据之间的相似性?_Similarity - Fatal编程技术网

Similarity 如何衡量两组数据之间的相似性?

Similarity 如何衡量两组数据之间的相似性?,similarity,Similarity,我需要找到两个数据数组之间的相似性度量。 你可以称相似性度量为任何你想要的,差异,相关性或任何东西 例如: 1, 2, 3, 4, 5 < Series 1 2, 3, 4, 5, 6 < Series 2 1,2,3,4,5

我需要找到两个数据数组之间的相似性度量。 你可以称相似性度量为任何你想要的,差异,相关性或任何东西

例如:

 1, 2, 3, 4, 5 < Series 1
 2, 3, 4, 5, 6 < Series 2
1,2,3,4,5
应该比这两个系列更相似:

 1, 2, 3, 4, 5 < Series 1
 1, 1, 5, 8, 7 < Series 2
1,2,3,4,5
有什么建议吗


有可用的源代码吗?

您可以计算:“上面的公式建议使用一种方便的单通算法来计算样本相关性”。编写一个循环来计算sum(xi)、sum(yi)、sum(xi^2)、sum(yi^2)和sum(xi*yi)。然后将这些总和插入公式。

如果相似性的定义是有多少相同的元素可以使用集合交点:

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
std::multiset系列1=std::multiset({1,2,3,4,5});
std::multiset Series2=std::multiset({2,3,4,5,6});
多集交叉;
std::set_交叉点(Series1.begin(),Series1.end(),
序列2.begin(),序列2.end(),
标准:背向插入器(交叉点);
int相似度=交集.size();/=4.

另一种方法是计算互信息,在matlab和C中有一个工具箱
这与C++和数学的一切无关。也许更好。EbAG:这比你好,但是仍然难以精确地回答。也许试试看。问题是“相似性”是人类的概念,而不是技术概念。要选择一种算法,你需要更具体地说明数据、相似性算法的使用和你的期望。@NikolaiNFetissov:我想他想要c++的答案,你介意更详细地说吗?有没有举个例子?像我五岁一样向我解释;)用代码找到了这个极好的答案,尽管C#: