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#: