这是我自己的作业,可能有不完善的地方。
现有银行提供的借贷信息记录集(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) 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('年龄'); |