题目描述:银行的贷款部门需要判别每个客户的信用好坏(是否未履行还贷责任),以决定是否给予贷款。可以根据贷款申请人的年龄(X1)、受教育程度(X2)、现在所从事工作的年数(X3)、未变更住址的年数(X4)、收入(X5)、负债收入比例(X6)、信用卡债务(X7)、其它债务(X8)等来判断其信用情况。下表是从某银行的客户资料中抽取的部分数据,和某客户的如上情况资料为(53,1,9,18,50,11.20,2.02,3.58),根据样本资料分别用马氏距离判别法、线性判别法、二次判别法对其进行信用好坏的判别。
马氏距离判别法:
clc;
clear;
% 用于构造判别函数的训练样本数据矩阵
training = [23 1 7 2 31 6.60 0.34 1.71;
34 1 17 3 59 8.00 1.81 2.91;
42 2 7 23 41 4.60 0.94 0.94;
39 1 19 5 48 13.10 1.93 4.36;
35 1 9 1 34 5.00 0.40 1.30;
37 1 1 3 24 15.10 1.80 1.82;
29 1 13 1 42 7.40 1.46 1.65;
32 2 11 6 75 23.30 7.76 9.72;
28 2 2 3 23 6.40 0.19 1.29;
26 1 4 3 27 10.50 2.47 0.36];
% 参数group是与training相应的分组变量
group = [1; 1; 1; 1; 1; 2; 2; 2; 2; 2];
% 待判别的样本数据矩阵
sample = [53, 1, 9, 18, 50, 11.20, 2.02, 3.58];
% 数据降维处理
pca_coeffs = pca(training);
training_reduced = training * pca_coeffs(:, 1:3);
sample_reduced = sample * pca_coeffs(:, 1:3);
% 使用马氏距离判别法分类
[class, err] = classify(sample_reduced, training_reduced, group, 'mahalanobis');
% 输出分类结果
fprintf('样本被分类为: %d\n', class);
fprintf('分类错误率: %f\n', err);
运行代码截图: