向量余弦相似度
Posted 东宫得臣
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了向量余弦相似度相关的知识,希望对你有一定的参考价值。
#include <iostream>
#include <vector>
#include <cmath>
template <typename DataType>
double mycosine(typename::std::vector<DataType>& arrayA, typename::std::vector<DataType>& arrayB) {
if(arrayA.empty() || arrayB.empty())
return 0;
double sumarrayA=0.0,sumarrayB=0.0;
double cosine=0.0;
for(typename::std::vector<DataType>::iterator itA=arrayA.begin(),itB=arrayB.begin();itA!=arrayA.end(),itB!=arrayB.end();++itA,++itB) {
sumarrayA+=(*itA)*(*itA);
sumarrayB+=(*itB)*(*itB);
cosine+=(*itA)*(*itB);
}
sumarrayA=sqrt(sumarrayA);
sumarrayB=sqrt(sumarrayB);
if((sumarrayA-0<0.0001) || (sumarrayB-0<0.0001)) {
return 0;
}
cosine/=(sumarrayA*sumarrayB);
return cosine;
}
int main() {
int length;
std::vector<int> arrayA;
std::vector<int> arrayB;
char tag=‘y‘;
int temp;
while(tag==‘y‘) {
arrayA.clear();
arrayB.clear();
std::cin>>length;
for(size_t i=0;i<length;++i) {
std::cin>>temp;
arrayA.push_back(temp);
}
for(size_t i=0;i<length;++i) {
std::cin>>temp;
arrayB.push_back(temp);
}
std::cout<<mycosine(arrayA,arrayB)<<std::endl;
std::cin>>tag;
}
return 0;
}
以上是关于向量余弦相似度的主要内容,如果未能解决你的问题,请参考以下文章