当前位置: 首页 > news >正文

信用评价研究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<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讨论

http://www.lryc.cn/news/286225.html

相关文章:

  • 网络安全产品之认识防毒墙
  • android 防抖工具类,经纬度检查工具类
  • PgSQL - 17新特性 - 块级别增量备份
  • Vue3setup()的非语法糖和语法糖的用法
  • HTTP状态信息
  • CSS之边框样式
  • k8s-helm
  • 黑马程序员JavaWeb开发|Maven高级
  • 【经验分享】MAC系统安装R和Rstudio(保姆级教程)安装下载只需5min
  • 探索设计模式的魅力:“感受单例模式的力量与神秘” - 掌握编程的王牌技巧
  • SpringCloud Aliba-Seata【上】-从入门到学废【7】
  • C# Cad2016二次开发选择csv导入信息(七)
  • [陇剑杯 2021]日志分析
  • Java面试汇总——jvm篇
  • 数据结构:完全二叉树(递归实现)
  • RK3568 移植Ubuntu
  • C++大学教程(第九版)6.34猜数字游戏 6.35 修改的猜数字游戏
  • 【立创EDA-PCB设计基础】5.布线设计规则设置
  • ElementUI简介以及相关操作
  • 内存耗尽排查思路
  • OpenCV书签 #差值哈希算法的原理与相似图片搜索实验
  • Unity中URP下获取主灯信息
  • 尝试着在Stable Diffusion里边使用SadTalker进行数字人制作
  • 链路聚合原理与配置
  • 第8章 通信网络安全
  • L1-092 进化论(Java)
  • SpringBoot 源码解析5:ConfigurationClassPostProcessor整体流程和@ComponentScan源码分析
  • 一.初识Linux 1-3操作系统概述Linux初识虚拟机介绍
  • Eureka整合seata分布式事务
  • 华为云磁盘性能指标(参考)