试用PCA将如下向量组映射到一维,并计算其贡献率。 x1=[0,-3]T , x2 =[3,0]T ,x3=[0,-1]T ,x4 =[1,-1]T, x5=[1,0]T
时间: 2023-09-26 14:15:15 浏览: 60
精细金属掩模板(FMM)行业研究报告 显示技术核心部件FMM材料产业分析与市场应用
首先,我们需要将数据进行中心化,即将每个特征的均值减去该特征在所有样本上的均值。计算得到每个特征的均值为:
```
mean_x1 = (0+3+0+1+1)/5 = 1
mean_x2 = (-3+0-1-1+0)/5 = -1
```
然后,我们将所有样本按列组成一个矩阵X:
```
X = [[ 0, 3, 0, 1, 1],
[-3, 0, -1, -1, 0]]
```
接下来,我们需要计算X的协方差矩阵C:
```
C = X * X.T / (n-1)
= [[ 7.2, -3.6],
[-3.6, 2.7]]
```
然后,我们对C进行特征值分解,得到特征值和特征向量:
```
eigenvalues, eigenvectors = np.linalg.eig(C)
```
计算得到特征值为:
```
lamda1 = 8.848
lamda2 = 1.052
```
特征向量为:
```
v1 = [-0.838, 0.546]
v2 = [-0.546, -0.838]
```
根据PCA的定义,我们需要将数据投影到特征向量上,以得到新的一维数据。在本例中,我们只需要将数据投影到v1上,即:
```
Y = v1.T * X
= [-3.994, 2.603]
```
其中,Y为投影后的一维数据,表示原始数据在v1方向上的投影值。我们可以计算Y的方差,以得到降维后的贡献率:
```
variance = np.var(Y)
= 8.848
contribution = variance / sum(eigenvalues)
= 0.893
```
这里的贡献率为89.3%,说明我们将原始数据成功地压缩到了一维,并保留了大部分的信息。
阅读全文