matlab异常检测

这是我自己的作业,可能有不完善的地方。

现有银行提供的借贷信息记录集(DAV-BankLoan.csv),共700条数据,包括客户的年龄、教育、工龄、地址、收入、负债率、信用卡负债、其他负债、违约等信息,现希望能识别出其中“负债率”不正常的客户,也就是“负债率”中的“异常点”。

1)现要求读入银行贷信息记录集(DAV-BankLoan.csv),完成“负债率”异常检测,并将检测结果以文件形式(CSV)输出,提交给银行。

2)现要求使用MATLAB,尝试基于盒须图完成给定示例数据借贷信息记录集(DAV-BankLoan.csv)中“负债率”异常值的检测以及异常值的标注。

3)如果怀疑“负债率”与“年龄”相关,在绘制散点图的同时,加入盒须图,尝试通过可视化对相关性进行分析。

答:

matlab异常检测_第1张图片

matlab异常检测_第2张图片

matlab异常检测_第3张图片

……,MATLAB语言代码如下:

%%%%%%%%%%%%%%%%%%%%%%%%第一问%%%%%%%%%%%%%%%%%%%%

clc;%清理命令行窗口

clear all;%清理工作区

%读取excel数据,同目录下

tx=xlsread('DAV-BankLoan.csv');

[a1,b1]=size(tx);

mu=mean(tx);%%mu是期望

sigma=std(tx);%%sigma是标准差

x1=mu-3*sigma;

x2=mu+3*sigma;

x=x1(6):x2(6);

y=normpdf(x,mu(6),sigma(6));%第6列负债率

plot(x,y,'r')

hold on

debtrate=tx(:,6);%第6列负债率

y2=normpdf(debtrate,mu(6),sigma(6));

plot(debtrate,y2,'o');

hold off;

legend('负债率');

line([x1(6),x1(6)],[0,y(6)],'color','b');

line([x2(6),x2(6)],[0,y(6)],'color','b');

text(x1(6),y(6),'mu-3*sigma;');

text(x2(6),y(6),'mu+3*sigma;');

t=debtrate-x2(6);

a=[];s=1;

for i=1:a1

    if debtrate(i,1)x2(6)%%异常值判定条件

        a(s,1)=debtrate(i,1);%%记录异常值

        a(s,2)=i;%%记录异常值的位置

        s=s+1;

    end

end

csvwrite('data.csv',a);%%导出异常值

%%%%%%%%%%%%%%%%%%%%%%%%%%%第二问%%%%%%%%%%%%%%%%

boxplot(debtrate);

title('负债率');

%%%%%%%%%%%%%%%%%%%%%%%%%%%第三问%%%%%%%%%%%%%%%%

age=tx(:,1);%第1列年龄

subplot(4,4,[2,3,4,6,7,8,10,11,12]);

plot(age,debtrate,'o')

title('年龄-负债率');

xlabel('年龄(岁)');

ylabel('负债率(%)');

subplot(4,4,[1,5,9]);

boxplot(debtrate);

title('负债率');

subplot(4,4,[14,15,16]);

boxplot(age,'Orientation','horizontal');

title('年龄');

你可能感兴趣的:(matlab,机器学习,算法)