鞍山做网站排名手机网站源程序
信用评价是各种店铺卖家分析买家信用行为的重要内容, 本文给出随机仿真代码模拟实际交易过程的信用评价. 主要研究内容有:
(1)研究最大交易额和信用度的关系
(2)研究买家不评价率对信用度影响
(3)研究交易次数对信用度影响
MATLAB程序如下:
主程序main.m
%% 
 clc;close all;clear all;
 sita=0.20; %差距容忍度
 beta=0.85; %衰减因子
 %% 产生交易信息
 k=200;%k=买家人数
 timeMin=1;%[timeMin,timeMax]=交易时间范围
 timeMax=100;%[timeMin,timeMax]=交易时间范围
 TnumberMin=1;%[TnumberMin,TnumberMax]=交易次数范围
 TnumberMax=80;%[TnumberMin,TnumberMax]=交易次数范围
 moneyMin=20;%[moneyMin,moneyMax]=交易金额范围
 moneyMax=1000;%[moneyMin,moneyMax]=交易金额范围
 SEvaluategoodMin=0.9;%[SEvaluateMin,SEvaluateMax]=对卖家的好评率范围[0.7,0.9],0-0.7为好评,0.7-0.9为中,0.9-1为差
 SEvaluategoodMax=0.96;%[SEvaluateMin,SEvaluateMax]=对卖家的好评率范围[0.7,0.9],0-0.7为好评,0.7-0.9为中,0.9-1为差
 SEvaluatemidMin=0.98;
 SEvaluatemidMax=0.999;
 noEvaluateRate=0.2;%noEvaluateRate=买家不评价的概率
 BEvaluateMin=0.9;%[BEvaluateMin,BMax]=买家自身的好评率范围
 BEvaluateMax=0.99;%[BEvaluateMin,BMax]=买家自身的好评率范围
 [TransData,N,LP]=TransInf(k,timeMin,timeMax,TnumberMin,TnumberMax,moneyMin,moneyMax,SEvaluategoodMin,SEvaluategoodMax,...
     SEvaluatemidMin,SEvaluatemidMax,noEvaluateRate,BEvaluateMin,BEvaluateMax);%jisuan
 % N=总交易次数
 %k=买家人数
 %[timeMin,timeMax]=交易时间范围
 %[TnumberMin,TnumberMax]=交易次数范围
 %[moneyMin,moneyMax]=交易金额范围
 %[SEvaluateMin,SEvaluateMax]=对卖家的好评率范围[0.7,0.9],0-0.7为好评,0.7-0.9为中,0.9-1为差,SEvaluategoodMin,SEvaluategoodMax,SEvaluatemidMin,SEvaluatemidMax
 %noEvaluateRate=买家不评价的概率
 %[BEvaluateMin,BMax]=买家自身的好评率范围
%TransData(i).B=i=第i个买家
 %TransData(i).S=卖家,不要了
 %TransData(i).T=第i次交易的时间
 %TransData(i).M=第i次交易的金额
 %TransData(i).R=第i次交易的评价值,好评则为1,中评则为0,差评则为一1
 %TransData(i).rou=买家自身的好评率
 %LP=评价率
%% 
 Pi=zeros(k,1);
 for i=1:k
     T=TransData(i).T;
     M=TransData(i).M;
     R=TransData(i).R;
     ysl=(T).*M;
     Pi(i,1)=sum(R.*ysl/sum(ysl));
 end
Pmean=mean(Pi);
P=0;
 for i=1:k
    rou=TransData(i).rou;
    s01=abs(Pi(i,1)-Pmean);
    if s01<=sita
        fy01=(1-s01)*rou;
    else
        fy01=(1-s01)*rou*beta;
    end
     P=P+Pi(i,1)*fy01;
 end
 disp('差距容忍度')
 sita
 disp('衰减因子')
 beta
 disp('总交易次数')
 N
 disp('评价率')
 LP
 disp('卖家的信用度')
 P
 disp('考虑评价率的卖家的信用度')
 Q=P*LP
  
关键函数 交易信息函数TransInf.m
function [TransData,N,LP]=TransInf(k,timeMin,timeMax,TnumberMin,TnumberMax,moneyMin,moneyMax,SEvaluategoodMin,SEvaluategoodMax,...
     SEvaluatemidMin,SEvaluatemidMax,noEvaluateRate,BEvaluateMin,BEvaluateMax)
 %% 产生交易信息函数
%k=买家人数
 %[timeMin,timeMax]=交易时间范围
 %[TnumberMin,TnumberMax]=交易次数范围
 %[moneyMin,moneyMax]=交易金额范围
 %[SEvaluateMin,SEvaluateMax]=对卖家的好评率范围[0.7,0.9],0-0.7为好评,0.7-0.9为中,0.9-1为差,SEvaluategoodMin,SEvaluategoodMax,SEvaluatemidMin,SEvaluatemidMax
 %noEvaluateRate=买家不评价的概率
 %[BEvaluateMin,BMax]=买家自身的好评率范围
%% TransData结构体的结果定义
 %TransData(i).B=i=第i个买家
 %TransData(i).S=卖家,不要了
 %TransData(i).T=第i次交易的时间
 %TransData(i).M=第i次交易的金额
 %TransData(i).R=第i次交易的评价值,好评则为1,中评则为0,差评则为一1
 %TransData(i).rou=买家i自身的好评率
 % N=总交易次数
 %LP=评价率
T01=timeMin:timeMax;
 L01=length(T01);
 if L01<TnumberMax%
     error('请输入正确的参数,交易时间范围设置过小');
 end
noEnumber=0;%
 Enumber=0;%
 for i=1:k%按买家循环
     %% --记录数据开始-------------
     TransData(i).B=i;
     TransData(i).S=1;
     % 产生交易时间
     index01=randperm(L01);
     state=0;
     iter=0;
     while state==0
         Tnumber=randi([TnumberMin TnumberMax],1,1);%产生交易次数
         if L01>=Tnumber
             time01 =index01(1:Tnumber);
             time=sort(time01);
             break;
         else
             state=0;
             iter=iter+1;
         end
         if iter>=10
             error('请输入正确的参数,交易时间范围设置过小');
         end
     end
     TransData(i).T=time;
     % 产生金额
     money=randi([moneyMin moneyMax],1,Tnumber);%产生交易金额,默认为整数
     TransData(i).M=money;%第i次交易的金额
     
     %% 好评率计算
     for j=1:Tnumber
         rnoE=rand;
         if rnoE>noEvaluateRate
             % 产生好评率
             rgood = SEvaluategoodMin + (SEvaluategoodMax-SEvaluategoodMin).*rand(1,1);%介于SEvaluategoodMax和SEvaluategoodMin之间
             % 产生中评率
             rmidle = SEvaluatemidMin + (SEvaluatemidMax-SEvaluatemidMin).*rand(1,1);%介于SEvaluatemidMi,nSEvaluatemidMax之间
             if rgood>rmidle
                 error('对卖家的好评率范围SEvaluategoodMin和SEvaluategoodMax设置过大或者SEvaluatemidMin和SEvaluatemidMax过小,请重新设置');
             end
             r001=rand;%
             if (r001>=0)&&(r001<rgood);
                 R01=1;
             end
             if (r001>=rgood)&&(r001<rmidle);
                 R01=0;
             end
             if (r001>=rmidle)&&(r001<1);
                 R01=-1;
             end
             Enumber=Enumber+1;%记录评价的交易
         else
             R01=0;
             noEnumber=noEnumber+1;%记录不评价的交易
         end
    
         if j==1%第一个交易直接赋值
             TransData(i).R=R01;
         else%其他交易放到后面
             TransData(i).R=[TransData(i).R, R01];
         end
     end
     TransData(i).rou=BEvaluateMin + (BEvaluateMax-BEvaluateMin).*rand(1,1);%
     %% --记录数据结束-------------
 end
 N=noEnumber+Enumber;
 LP=Enumber/N;
main2.m 是研究最大交易额和信用度的关系
%% 研究最大交易额和信用度的关系
 clc;close all;clear all;
 sita=0.20; %差距容忍度
 beta=0.85; %衰减因子
 %% 产生交易信息
 K=100:100:1000;
 G=length(K);
 Pcell=zeros(G,1);
 Qcell=zeros(G,1);
 for g=1:G
     k=200;%k=买家人数
     timeMin=1;%[timeMin,timeMax]=交易时间范围
     timeMax=100;%[timeMin,timeMax]=交易时间范围
     TnumberMin=1;%[TnumberMin,TnumberMax]=交易次数范围
     TnumberMax=80;%[TnumberMin,TnumberMax]=交易次数范围
     moneyMin=20;%[moneyMin,moneyMax]=交易金额范围
     moneyMax=K(g);%[moneyMin,moneyMax]=交易金额范围
     SEvaluategoodMin=0.9;%[SEvaluateMin,SEvaluateMax]=对卖家的好评率范围[0.7,0.9],0-0.7为好评,0.7-0.9为中,0.9-1为差
     SEvaluategoodMax=0.96;%[SEvaluateMin,SEvaluateMax]=对卖家的好评率范围[0.7,0.9],0-0.7为好评,0.7-0.9为中,0.9-1为差
     SEvaluatemidMin=0.98;
     SEvaluatemidMax=0.999;
     noEvaluateRate=0.2;%noEvaluateRate=买家不评价的概率
     BEvaluateMin=0.9;%[BEvaluateMin,BMax]=买家自身的好评率范围
     BEvaluateMax=0.99;%[BEvaluateMin,BMax]=买家自身的好评率范围
     [TransData,N,LP]=TransInf(k,timeMin,timeMax,TnumberMin,TnumberMax,moneyMin,moneyMax,SEvaluategoodMin,SEvaluategoodMax,...
         SEvaluatemidMin,SEvaluatemidMax,noEvaluateRate,BEvaluateMin,BEvaluateMax);%jisuan
     % N=总交易次数
     %k=买家人数
     %[timeMin,timeMax]=交易时间范围
     %[TnumberMin,TnumberMax]=交易次数范围
     %[moneyMin,moneyMax]=交易金额范围
     %[SEvaluateMin,SEvaluateMax]=对卖家的好评率范围[0.7,0.9],0-0.7为好评,0.7-0.9为中,0.9-1为差,SEvaluategoodMin,SEvaluategoodMax,SEvaluatemidMin,SEvaluatemidMax
     %noEvaluateRate=买家不评价的概率
     %[BEvaluateMin,BMax]=买家自身的好评率范围
     
     %TransData(i).B=i=第i个买家
     %TransData(i).S=卖家,不要了
     %TransData(i).T=第i次交易的时间
     %TransData(i).M=第i次交易的金额
     %TransData(i).R=第i次交易的评价值,好评则为1,中评则为0,差评则为一1
     %TransData(i).rou=买家自身的好评率
     %LP=评价率
     
     %%
     Pi=zeros(k,1);
     for i=1:k
         T=TransData(i).T;
         M=TransData(i).M;
         R=TransData(i).R;
         ysl=(T).*M;
         Pi(i,1)=sum(R.*ysl/sum(ysl));
     end
     
     Pmean=mean(Pi);
     
     P=0;
     for i=1:k
         rou=TransData(i).rou;
         s01=abs(Pi(i,1)-Pmean);
         if s01<=sita
             fy01=(1-s01)*rou;
         else
             fy01=(1-s01)*rou*beta;
         end
         P=P+Pi(i,1)*fy01;
     end
     Q=P*LP;
     Pcell(g,1)=P;
     Qcell(g,1)=Q;
 end
 figure;
 plot(K,Pcell,'b-',K,Qcell,'r--');
 legend('信用度','考虑评价率的信用度');
 xlabel('交易金额上限');
 ylabel('信用度');
 title('信用度和交易金额上限关系曲线');
 disp('差距容忍度')
 sita
 disp('衰减因子')
 beta
 disp('总交易次数')
 N
 disp('评价率')
 LP
 disp('卖家的信用度')
 P
 disp('考虑评价率的卖家的信用度')
 Q
  
main3.m 研究买家不评价率对信用度影响
%% 研究买家不评价率对信用度影响
 clc;close all;clear all;
 sita=0.20; %差距容忍度
 beta=0.85; %衰减因子
 %% 产生交易信息
 K=0.1:0.01:0.3;
 G=length(K);
 Pcell=zeros(G,1);
 Qcell=zeros(G,1);
 for g=1:G
     k=200;%k=买家人数
     timeMin=1;%[timeMin,timeMax]=交易时间范围
     timeMax=100;%[timeMin,timeMax]=交易时间范围
     TnumberMin=1;%[TnumberMin,TnumberMax]=交易次数范围
     TnumberMax=80;%[TnumberMin,TnumberMax]=交易次数范围
     moneyMin=20;%[moneyMin,moneyMax]=交易金额范围
     moneyMax=1000;%[moneyMin,moneyMax]=交易金额范围
     SEvaluategoodMin=0.9;%[SEvaluateMin,SEvaluateMax]=对卖家的好评率范围[0.7,0.9],0-0.7为好评,0.7-0.9为中,0.9-1为差
     SEvaluategoodMax=0.96;%[SEvaluateMin,SEvaluateMax]=对卖家的好评率范围[0.7,0.9],0-0.7为好评,0.7-0.9为中,0.9-1为差
     SEvaluatemidMin=0.98;
     SEvaluatemidMax=0.999;
     noEvaluateRate=K(g);%noEvaluateRate=买家不评价的概率
     BEvaluateMin=0.9;%[BEvaluateMin,BMax]=买家自身的好评率范围
     BEvaluateMax=0.99;%[BEvaluateMin,BMax]=买家自身的好评率范围
     [TransData,N,LP]=TransInf(k,timeMin,timeMax,TnumberMin,TnumberMax,moneyMin,moneyMax,SEvaluategoodMin,SEvaluategoodMax,...
         SEvaluatemidMin,SEvaluatemidMax,noEvaluateRate,BEvaluateMin,BEvaluateMax);%jisuan
     % N=总交易次数
     %k=买家人数
     %[timeMin,timeMax]=交易时间范围
     %[TnumberMin,TnumberMax]=交易次数范围
     %[moneyMin,moneyMax]=交易金额范围
     %[SEvaluateMin,SEvaluateMax]=对卖家的好评率范围[0.7,0.9],0-0.7为好评,0.7-0.9为中,0.9-1为差,SEvaluategoodMin,SEvaluategoodMax,SEvaluatemidMin,SEvaluatemidMax
     %noEvaluateRate=买家不评价的概率
     %[BEvaluateMin,BMax]=买家自身的好评率范围
     
     %TransData(i).B=i=第i个买家
     %TransData(i).S=卖家,不要了
     %TransData(i).T=第i次交易的时间
     %TransData(i).M=第i次交易的金额
     %TransData(i).R=第i次交易的评价值,好评则为1,中评则为0,差评则为一1
     %TransData(i).rou=买家自身的好评率
     %LP=评价率
     
     %%
     Pi=zeros(k,1);
     for i=1:k
         T=TransData(i).T;
         M=TransData(i).M;
         R=TransData(i).R;
         ysl=(T).*M;
         Pi(i,1)=sum(R.*ysl/sum(ysl));
     end
     
     Pmean=mean(Pi);
     
     P=0;
     for i=1:k
         rou=TransData(i).rou;
         s01=abs(Pi(i,1)-Pmean);
         if s01<=sita
             fy01=(1-s01)*rou;
         else
             fy01=(1-s01)*rou*beta;
         end
         P=P+Pi(i,1)*fy01;
     end
     Q=P*LP;
     Pcell(g,1)=P;
     Qcell(g,1)=Q;
 end
 figure;
 plot(K,Pcell,'b-',K,Qcell,'r--');
 legend('信用度','考虑评价率的信用度');
 xlabel('买家不评价率');
 ylabel('信用度');
 title('信用度和买家不评价率关系曲线');
 disp('差距容忍度')
 sita
 disp('衰减因子')
 beta
 disp('总交易次数')
 N
 disp('评价率')
 LP
 disp('卖家的信用度')
 P
 disp('考虑评价率的卖家的信用度')
 Q
  
main4.m 研究交易次数对信用度影响
%% 研究交易次数对信用度影响
 clc;close all;clear all;
 sita=0.20; %差距容忍度
 beta=0.85; %衰减因子
 %% 产生交易信息
 K=10:5:80;
 G=length(K);
 Pcell=zeros(G,1);
 Qcell=zeros(G,1);
 for g=1:G
     k=200;%k=买家人数
     timeMin=1;%[timeMin,timeMax]=交易时间范围
     timeMax=100;%[timeMin,timeMax]=交易时间范围
     TnumberMin=1;%[TnumberMin,TnumberMax]=交易次数范围
     TnumberMax=K(g);%[TnumberMin,TnumberMax]=交易次数范围
     moneyMin=20;%[moneyMin,moneyMax]=交易金额范围
     moneyMax=1000;%[moneyMin,moneyMax]=交易金额范围
     SEvaluategoodMin=0.9;%[SEvaluateMin,SEvaluateMax]=对卖家的好评率范围[0.7,0.9],0-0.7为好评,0.7-0.9为中,0.9-1为差
     SEvaluategoodMax=0.96;%[SEvaluateMin,SEvaluateMax]=对卖家的好评率范围[0.7,0.9],0-0.7为好评,0.7-0.9为中,0.9-1为差
     SEvaluatemidMin=0.98;
     SEvaluatemidMax=0.999;
     noEvaluateRate=0.2;%noEvaluateRate=买家不评价的概率
     BEvaluateMin=0.9;%[BEvaluateMin,BMax]=买家自身的好评率范围
     BEvaluateMax=0.99;%[BEvaluateMin,BMax]=买家自身的好评率范围
     [TransData,N,LP]=TransInf(k,timeMin,timeMax,TnumberMin,TnumberMax,moneyMin,moneyMax,SEvaluategoodMin,SEvaluategoodMax,...
         SEvaluatemidMin,SEvaluatemidMax,noEvaluateRate,BEvaluateMin,BEvaluateMax);%jisuan
     % N=总交易次数
     %k=买家人数
     %[timeMin,timeMax]=交易时间范围
     %[TnumberMin,TnumberMax]=交易次数范围
     %[moneyMin,moneyMax]=交易金额范围
     %[SEvaluateMin,SEvaluateMax]=对卖家的好评率范围[0.7,0.9],0-0.7为好评,0.7-0.9为中,0.9-1为差,SEvaluategoodMin,SEvaluategoodMax,SEvaluatemidMin,SEvaluatemidMax
     %noEvaluateRate=买家不评价的概率
     %[BEvaluateMin,BMax]=买家自身的好评率范围
     
     %TransData(i).B=i=第i个买家
     %TransData(i).S=卖家,不要了
     %TransData(i).T=第i次交易的时间
     %TransData(i).M=第i次交易的金额
     %TransData(i).R=第i次交易的评价值,好评则为1,中评则为0,差评则为一1
     %TransData(i).rou=买家自身的好评率
     %LP=评价率
     
     %%
     Pi=zeros(k,1);
     for i=1:k
         T=TransData(i).T;
         M=TransData(i).M;
         R=TransData(i).R;
         ysl=(T).*M;
         Pi(i,1)=sum(R.*ysl/sum(ysl));
     end
     
     Pmean=mean(Pi);
     
     P=0;
     for i=1:k
         rou=TransData(i).rou;
         s01=abs(Pi(i,1)-Pmean);
         if s01<=sita
             fy01=(1-s01)*rou;
         else
             fy01=(1-s01)*rou*beta;
         end
         P=P+Pi(i,1)*fy01;
     end
     Q=P*LP;
     Pcell(g,1)=P;
     Qcell(g,1)=Q;
 end
 figure;
 plot(K,Pcell,'b-',K,Qcell,'r--');
 legend('信用度','考虑评价率的信用度');
 xlabel('交易次数');
 ylabel('信用度');
 title('信用度和交易次数关系曲线');
 disp('差距容忍度')
 sita
 disp('衰减因子')
 beta
 disp('总交易次数')
 N
 disp('评价率')
 LP
 disp('卖家的信用度')
 P
 disp('考虑评价率的卖家的信用度')
 Q
程序结果:
差距容忍度
sita =
0.2000
衰减因子
beta =
0.8500
总交易次数
N =
7677
评价率
LP =
0.8032
卖家的信用度
P =
126.8858
考虑评价率的卖家的信用度
Q =
101.9120
>>




需要讨论的可以加Q1579325979讨论
