3.已知二维数据集 X={(2,1)T, (2,3)T, (5,2)T}. 使用 PCA(主成分分析法)进行线性降维. (1)计算均值向量 μ;(2)计算散布矩阵S;(3)计算S的最大特征值λ1及对应的特征向量W1(4)降至 1 维,计算第 1 个样本点x1 = (2, 1)T 的 1 维坐标x = a11 ;(5)重构x1 为x ,并计算误差|| x1 一 x ||2 .
时间: 2023-12-04 08:03:45 浏览: 97
好的,我会根据你的问题逐步回答。
1. 计算均值向量 μ:
首先计算每个维度的均值,得到 (3, 2)T,即为均值向量 μ。
2. 计算散布矩阵 S:
散布矩阵 S 可以通过以下公式计算:
S = 1/n * Σ(xi - μ)(xi - μ)T
其中,n 为样本数量,xi 为第 i 个样本点。
代入数据,得到:
S = 1/3 * [(2-3)(-1)(2-3)(-3)(5-3)(-2)(1-2)(-1)(1-2)(-3)(2-2)(-2)]
= [9 -6; -6 2]
3. 计算 S 的最大特征值 λ1 及对应的特征向量 W1:
要计算 S 的最大特征值 λ1 及对应的特征向量 W1,可以使用 numpy 库中的 linalg.eig() 函数。代码如下:
import numpy as np
S = np.array([[9, -6], [-6, 2]])
eig_values, eig_vectors = np.linalg.eig(S)
print("特征值:", eig_values)
print("特征向量:", eig_vectors)
运行结果为:
特征值: [11.26794919 -0.26794919]
特征向量: [[ 0.89442719 0.4472136 ]
[-0.4472136 0.89442719]]
因为要进行一维降维,所以我们只需要取特征值最大的那个特征向量,即 W1 = [0.8944, -0.4472]。
4. 降至 1 维,计算第 1 个样本点 x1 = (2, 1)T 的 1 维坐标 x = a11:
要将样本点 x1 进行降维,可以将其与选定的特征向量进行点积运算,得到:
x = x1T * W1 = [2, 1] * [0.8944, -0.4472]T = 1.3416
所以第 1 个样本点的 1 维坐标为 x = 1.3416。
5. 重构 x1 为 x ,并计算误差 || x1 一 x ||2:
重构 x1 的方法是,将 x 乘以 W1 的转置,再加上均值向量 μ,得到重构后的样本点 x':
x' = x * W1T + μ = 1.3416 * [0.8944, -0.4472] + [3, 2] = [4.138, 1.724]
误差可以通过计算重构后的样本点 x' 与原始样本点 x1 的欧几里得距离得到:
|| x1 - x' ||2 = || [2, 1] - [4.138, 1.724] ||2 = 2.487
所以误差为 2.487。
阅读全文