function distance=RankingDistance(ranking1,ranking2,distanceType,weight)
%ranking1为计算权值的基准
%kendall距离输出的是归一化后的距离
%footrule距离输出的是归一化后的距离
if nargin<4
weight=ones(size(ranking1));
end
Sweight=weightRerank(ranking1,weight);% - 按照排序顺序进行加权,靠前的序号和靠后的序号对结果影响程度不同
switch distanceType
case 1 %Spearman's footrule
distance=sum(abs(ranking1-ranking2).*Sweight,2)*2/(max(size(ranking1).^2));
case 2 %Spearman's footrule based 2-norm
distance=sum(((ranking1-ranking2).^2).*Sweight,2)*2/(max(size(ranking1).^2));
case 3 %Kendall Distance
%--------------------------------------------------------------------------
% %将全局排序位置转化为局部排序关系
% ranking1=RankingSort(ranking1);
% ranking2=RankingSort(ranking2);
%--------------------------------------------------------------------------
distance=KendallDistance(ranking1,ranking2);
end
end
function Sweight=weightRerank(ranking,weight)
[~,tmpRanking]=sort(ranking);
[~,intRanking]=sort(tmpRanking);
Sweight=ones(size(intRanking));
for i=1:size(intRanking,2)
Sweight(intRanking(i))=weight(i);
end
end
function distance=KendallDistance(ranking1,ranking2)
% if KendallErrDisp
% if max(size(unique(ranking1)))~=max(size(ranking1))||max(size(unique(ranking2)))~=max(size(ranking1))
% disp('排序有同序号项')
% end
% end
LengthOfRank=max(size(ranking1));
tmpDistance=0;
for i=1:LengthOfRank-1
for j=i+1:LengthOfRank
if (ranking1(i)>ranking1(j))&&(ranking2(i)>ranking2(j))
else if (ranking1(i)<ranking1(j))&&(ranking2(i)<ranking2(j))
else if (ranking1(i)==ranking1(j))&&(ranking2(i)==ranking2(j))
else
tmpDistance=tmpDistance+1;
end
end
end
% OrderJudge=(ranking1(i)-ranking1(j))*(ranking2(i)-ranking2(j));
% if OrderJudge<=0
% % if (ranking1(i)-ranking1(j))==0&&(ranking2(i)-ranking2(j))==0
% if (ranking1(i)-ranking1(j))==0||(ranking2(i)-ranking2(j))==0
% else
% tmpDistance=tmpDistance+1;
% end
% end
end
end
distance=tmpDistance*2/LengthOfRank/(LengthOfRank-1);
end
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论


















收起资源包目录



共 2 条
- 1
资源评论


d4574b
- 粉丝: 0
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
