matlab异常检测

该博客详细介绍了如何使用MATLAB对DAV-BankLoan.csv文件中的‘负债率’进行异常检测,通过盒须图和散点图探索其与年龄的关系,并将异常值以CSV文件形式输出。作者展示了利用统计方法和可视化技术识别异常值的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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

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)<x1(6)||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('年龄');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值