信用评价研究MATLAB仿真代码

发布时间:2024年01月23日

信用评价是各种店铺卖家分析买家信用行为的重要内容,?本文给出随机仿真代码模拟实际交易过程的信用评价.?主要研究内容有:

(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讨论

文章来源:https://blog.csdn.net/corn1949/article/details/135775963
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。