资源描述:
《个性化服务推荐.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
基于二部图的个性化系统推荐:#include#include#include#include#include#include#includeusingnamespacestd;//从TXT中读入数据到矩阵(二维数组)templatevector>txtRead(stringFilePath,introw,intcol){ifstreaminput(FilePath);if(!input.is_open()){cerr<<"Fileisnotexisting,checkthepath: "<>data(row,vector(col,0));for(inti=0;i>data[i][j];if(data[i][j]>=3)data[i][j]=1;elsedata[i][j]=0;}}returndata;}//把矩阵中的数据写入TXT文件templatevoidtxtWrite(vector>Matrix,stringdest){ ofstreamoutput(dest);vector>::size_typerow=Matrix.size();vector::size_typecol=Matrix[0].size();for(vector>::size_typei=0;i::size_typej=0;jA,std::vectorB){doubleres=0;for(std::vector::size_typei=0;i//vector>Transpose(vector>Matrix){unsignedrow=Matrix.size();unsignedcol=Matrix[0].size();vector>Trans(col,vector(row,0));for(unsignedi=0;i TSumVector(vectorvec){Tres=0;for(vector::size_typei=0;i=b;}vectorDescendVector(vectorvec){vectortmpVec=vec;sort(tmpVec.begin(),tmpVec.end(),IsBigger);vectoridx;for(vector::size_typei=0;i::size_typej=0;j>ProbS(vector>data){autorow=data.size();autocol=data[0].size();vector>transData=Transpose(data);//第一步利用概率传播机制计算权重矩阵vector>weights(col,vector(col,0));for(vector::size_typei=0;i::size_typej=0;j(transData[j]);doublesum=0;for(vector::size_typek=0;k(data[k]);}if(degree)weights[i][j]=sum/degree;}}//第二步利用权重矩阵和训练数据集针对每个用户对每一个item评分vector>scores(row,vector(col,0));for(vector::size_typei=0;i::size_typej=0;j>ComputeHitRate(vector>scores,vector>test,unsignedlength){autousersNum=test.size();autoitemsNum=test[0].size();vector>sortedIndex;//因为只是对测试集中的用户和items进行测试,于是选取与测试集大小一样的预测数据vector>selectedScores(usersNum,vector(itemsNum,0));vectorline;for(unsignedi=0;i>hitRate(length);for(unsignedk=1;k<=length;++k){hitRate[k-1].push_back(k);doubleCounter=0;for(unsignedi=0;i>train=txtRead(FilePath1,row,col);//vector>test=txtRead(FilePath2,462,1591);cout<<"利用二部图网络进行评分预测..."<>predictScores=ProbS(train);txtWrite(predictScores,"predictScores.txt");/*cout<<"计算命中率..."<>hitRate=ComputeHitRate(predictScores,test,1591);txtWrite(hitRate,"hitRate.txt");cout<<"命中率结果保存完毕!"<#include#include#include