数据降维:线性判别分析与核主成分分析
1. 线性判别分析(LDA)
1.1 选择新特征子空间的线性判别式
线性判别分析(LDA)的剩余步骤与主成分分析(PCA)类似,但不是对协方差矩阵进行特征分解,而是解决矩阵 $S_W^{-1}S_B$ 的广义特征值问题:
import numpy as np
# 假设 S_W 和 S_B 已经定义
eigen_vals, eigen_vecs = np.linalg.eig(np.linalg.inv(S_W).dot(S_B))
计算特征对后,按特征值降序排序:
eigen_pairs = [(np.abs(eigen_vals[i]), eigen_vecs[:,i]) for i in range(len(eigen_vals))]
eigen_pairs = sorted(eigen_pairs, key=lambda k: k[0], reverse=True)
print('Eigenvalues in descending order:\n')
for eigen_val in eigen_pairs:
print(eigen_val[0])
在 LDA 中,线性判别式的数量最多为 $c - 1$,其中 $c$ 是类标签的数量。因为类间散布矩阵 $S_B$ 是 $c$ 个秩为 1 或更小的矩阵之和。实际上,我们通常只有两个非零特征值。
为了衡量线性判别式(特征向量)捕获的类判别信
超级会员免费看
订阅专栏 解锁全文
57

被折叠的 条评论
为什么被折叠?



