信用评价研究MATLAB仿真代码

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

(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     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                 R01=1;
            end
            if (r001>=rgood)&&(r001                 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

>> 

信用评价研究MATLAB仿真代码_第1张图片

信用评价研究MATLAB仿真代码_第2张图片

信用评价研究MATLAB仿真代码_第3张图片

信用评价研究MATLAB仿真代码_第4张图片

需要讨论的可以加Q1579325979讨论

你可能感兴趣的:(matlab,开发语言)