从零开始的机器学习--LDA线性判别分析

该博客介绍了如何使用LDA(线性判别分析)对鸢尾花数据集进行降维处理。通过计算全局、类内和类间散度矩阵,求取特征向量和特征值,最终将数据降至二维空间并用不同颜色区分三个类别,展示了LDA在高维数据可视化上的应用。
摘要由CSDN通过智能技术生成

本文章参考机器学习周志华
基本原理
请添加图片描述
请添加图片描述
使用LDA对iris数据集进行降维处理

main.m

clear;clc;
% D = cell(150,6);
D = [1	5.1	3.5	1.4	0.2	1	;
2	4.9	3	1.4	0.2	1	;
3	4.7	3.2	1.3	0.2	1	;
4	4.6	3.1	1.5	0.2	1	;
5	5	3.6	1.4	0.2	1	;
6	5.4	3.9	1.7	0.4	1	;
7	4.6	3.4	1.4	0.3	1	;
8	5	3.4	1.5	0.2	1	;
9	4.4	2.9	1.4	0.2	1	;
10	4.9	3.1	1.5	0.1	1	;
11	5.4	3.7	1.5	0.2	1	;
12	4.8	3.4	1.6	0.2	1	;
13	4.8	3	1.4	0.1	1	;
14	4.3	3	1.1	0.1	1	;
15	5.8	4	1.2	0.2	1	;
16	5.7	4.4	1.5	0.4	1	;
17	5.4	3.9	1.3	0.4	1	;
18	5.1	3.5	1.4	0.3	1	;
19	5.7	3.8	1.7	0.3	1	;
20	5.1	3.8	1.5	0.3	1	;
21	5.4	3.4	1.7	0.2	1	;
22	5.1	3.7	1.5	0.4	1	;
23	4.6	3.6	1	0.2	1	;
24	5.1	3.3	1.7	0.5	1	;
25	4.8	3.4	1.9	0.2	1	;
26	5	3	1.6	0.2	1	;
27	5	3.4	1.6	0.4	1	;
28	5.2	3.5	1.5	0.2	1	;
29	5.2	3.4	1.4	0.2	1	;
30	4.7	3.2	1.6	0.2	1	;
31	4.8	3.1	1.6	0.2	1	;
32	5.4	3.4	1.5	0.4	1	;
33	5.2	4.1	1.5	0.1	1	;
34	5.5	4.2	1.4	0.2	1	;
35	4.9	3.1	1.5	0.2	1	;
36	5	3.2	1.2	0.2	1	;
37	5.5	3.5	1.3	0.2	1	;
38	4.9	3.6	1.4	0.1	1	;
39	4.4	3	1.3	0.2	1	;
40	5.1	3.4	1.5	0.2	1	;
41	5	3.5	1.3	0.3	1	;
42	4.5	2.3	1.3	0.3	1	;
43	4.4	3.2	1.3	0.2	1	;
44	5	3.5	1.6	0.6	1	;
45	5.1	3.8	1.9	0.4	1	;
46	4.8	3	1.4	0.3	1	;
47	5.1	3.8	1.6	0.2	1	;
48	4.6	3.2	1.4	0.2	1	;
49	5.3	3.7	1.5	0.2	1	;
50	5	3.3	1.4	0.2	1	;
51	7	3.2	4.7	1.4	2	;
52	6.4	3.2	4.5	1.5	2	;
53	6.9	3.1	4.9	1.5	2	;
54	5.5	2.3	4	1.3	2	;
55	6.5	2.8	4.6	1.5	2	;
56	5.7	2.8	4.5	1.3	2	;
57	6.3	3.3	4.7	1.6	2	;
58	4.9	2.4	3.3	1	2	;
59	6.6	2.9	4.6	1.3	2	;
60	5.2	2.7	3.9	1.4	2	;
61	5	2	3.5	1	2	;
62	5.9	3	4.2	1.5	2	;
63	6	2.2	4	1	2	;
64	6.1	2.9	4.7	1.4	2	;
65	5.6	2.9	3.6	1.3	2	;
66	6.7	3.1	4.4	1.4	2	;
67	5.6	3	4.5	1.5	2	;
68	5.8	2.7	4.1	1	2	;
69	6.2	2.2	4.5	1.5	2	;
70	5.6	2.5	3.9	1.1	2	;
71	5.9	3.2	4.8	1.8	2	;
72	6.1	2.8	4	1.3	2	;
73	6.3	2.5	4.9	1.5	2	;
74	6.1	2.8	4.7	1.2	2	;
75	6.4	2.9	4.3	1.3	2	;
76	6.6	3	4.4	1.4	2	;
77	6.8	2.8	4.8	1.4	2	;
78	6.7	3	5	1.7	2	;
79	6	2.9	4.5	1.5	2	;
80	5.7	2.6	3.5	1	2	;
81	5.5	2.4	3.8	1.1	2	;
82	5.5	2.4	3.7	1	2	;
83	5.8	2.7	3.9	1.2	2	;
84	6	2.7	5.1	1.6	2	;
85	5.4	3	4.5	1.5	2	;
86	6	3.4	4.5	1.6	2	;
87	6.7	3.1	4.7	1.5	2	;
88	6.3	2.3	4.4	1.3	2	;
89	5.6	3	4.1	1.3	2	;
90	5.5	2.5	4	1.3	2	;
91	5.5	2.6	4.4	1.2	2	;
92	6.1	3	4.6	1.4	2	;
93	5.8	2.6	4	1.2	2	;
94	5	2.3	3.3	1	2	;
95	5.6	2.7	4.2	1.3	2	;
96	5.7	3	4.2	1.2	2	;
97	5.7	2.9	4.2	1.3	2	;
98	6.2	2.9	4.3	1.3	2	;
99	5.1	2.5	3	1.1	2	;
100	5.7	2.8	4.1	1.3	2	;
101	6.3	3.3	6	2.5	3	;
102	5.8	2.7	5.1	1.9	3	;
103	7.1	3	5.9	2.1	3	;
104	6.3	2.9	5.6	1.8	3	;
105	6.5	3	5.8	2.2	3	;
106	7.6	3	6.6	2.1	3	;
107	4.9	2.5	4.5	1.7	3	;
108	7.3	2.9	6.3	1.8	3	;
109	6.7	2.5	5.8	1.8	3	;
110	7.2	3.6	6.1	2.5	3	;
111	6.5	3.2	5.1	2	3	;
112	6.4	2.7	5.3	1.9	3	;
113	6.8	3	5.5	2.1	3	;
114	5.7	2.5	5	2	3	;
115	5.8	2.8	5.1	2.4	3	;
116	6.4	3.2	5.3	2.3	3	;
117	6.5	3	5.5	1.8	3	;
118	7.7	3.8	6.7	2.2	3	;
119	7.7	2.6	6.9	2.3	3	;
120	6	2.2	5	1.5	3	;
121	6.9	3.2	5.7	2.3	3	;
122	5.6	2.8	4.9	2	3	;
123	7.7	2.8	6.7	2	3	;
124	6.3	2.7	4.9	1.8	3	;
125	6.7	3.3	5.7	2.1	3	;
126	7.2	3.2	6	1.8	3	;
127	6.2	2.8	4.8	1.8	3	;
128	6.1	3	4.9	1.8	3	;
129	6.4	2.8	5.6	2.1	3	;
130	7.2	3	5.8	1.6	3	;
131	7.4	2.8	6.1	1.9	3	;
132	7.9	3.8	6.4	2	3	;
133	6.4	2.8	5.6	2.2	3	;
134	6.3	2.8	5.1	1.5	3	;
135	6.1	2.6	5.6	1.4	3	;
136	7.7	3	6.1	2.3	3	;
137	6.3	3.4	5.6	2.4	3	;
138	6.4	3.1	5.5	1.8	3	;
139	6	3	4.8	1.8	3	;
140	6.9	3.1	5.4	2.1	3	;
141	6.7	3.1	5.6	2.4	3	;
142	6.9	3.1	5.1	2.3	3	;
143	5.8	2.7	5.1	1.9	3	;
144	6.8	3.2	5.9	2.3	3	;
145	6.7	3.3	5.7	2.5	3	;
146	6.7	3	5.2	2.3	3	;
147	6.3	2.5	5	1.9	3	;
148	6.5	3	5.2	2	3	;
149	6.2	3.4	5.4	2.3	3	;
150	5.9	3	5.1	1.8	3	;
];
D1 = D(1:50,:);
D2 = D(51:100,:);
D3 = D(101:150,:);
wei = 2;
%全局散度矩阵
X = zeros(150,4);
for i = 1:4
    X(:,i) = D(:,i+1);
end
St = zeros(4,4);
for i = 1:size(D,1)
    St = St+(D(i,2:5)'-mean(X)')*(D(i,2:5)'-mean(X)')';
end
Data = cell(1,3);
Data{1} = D1;
Data{2} = D2;
Data{3} = D3;
%类内散度矩阵
Sw = zeros(4,4);
for i = 1:3
    mui = mean(Data{1,i});
    mui = mui(2:5);
    for j = 1:size(Data{1,i},1)
        Sw = Sw+(Data{1,i}(j,2:5)'-mui')*(Data{1,i}(j,2:5)'-mui')';
    end
end
%类间散度矩阵
Sb = zeros(4,4);
for i = 1:3
    mui = mean(Data{1,i});
    mui = mui(2:5);
    Sb = Sb+size(Data{1,i},1)*(mui'-mean(X)')*(mui'-mean(X)')';
end
%求Sw逆Sb的特征向量和特征值
[V,DD] = eig(inv(Sw)*Sb);
temp = sort(DD,'descend');
times = 0;
for i = 1:size(temp,1)
    for j = 1:size(temp,2)
        if temp(i,j)~=0
            times = times+1;
            t(times) = temp(i,j);
        end
        if times>=wei
            break
        end
    end
end
for i = 1:length(t)
    [~,col(i)] = find(DD==t(i));
end
w = V(:,col);
%%对数据降维
D_new = zeros(size(D,1),wei);
for i = 1:size(D,1)
    D_new(i,:) = D(i,2:5)*w;
end
figure(2)
hold on
D_new1 = D_new(1:50,:);
D_new2 = D_new(51:100,:);
D_new3 = D_new(101:150,:);
scatter(D_new1(:,1),D_new1(:,2),'r');
scatter(D_new2(:,1),D_new2(:,2),'g');
scatter(D_new3(:,1),D_new3(:,2),'b');
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值