You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何手动计算10个三维向量数组的两个主成分向量?

手动求解三维向量PCA主成分的完整步骤

没问题!我来一步步教你手动计算这10个三维向量的前两个主成分,全程都是基础线性代数运算,不用依赖任何库,跟着走就行:

1. 数据准备与去中心化

首先把你的10个三维向量整理成矩阵:建议按行代表特征(x/y/z),列代表单个样本来排列(比如10个样本就是3行10列的矩阵$X$)。

接下来必须做去中心化操作(这是PCA的关键前提):

  • 分别计算x、y、z三个特征的平均值:$\bar{x} = \frac{1}{10}\sum_{i=1}^{10}x_i$,$\bar{y}$、$\bar{z}$同理
  • 用每个样本的特征值减去对应平均值,得到去中心化后的矩阵$X_{centered}$:
    X_centered[p][i] = X[p][i] - mean(p)
    这里p对应x/y/z的行索引,i是第i个样本的列索引。

2. 计算协方差矩阵

基于去中心化后的矩阵,计算3×3的协方差矩阵$C$:
协方差矩阵的元素$C_{pq}$表示第p个特征和第q个特征的协方差,计算公式为:
C[p][q] = (1/(10-1)) * sum(X_centered[p][i] * X_centered[q][i] for i in 0..9)

  • 除以9是无偏估计,如果你图省事除以10也可以,只是结果会缩放一点,完全不影响主成分的方向
  • 对角线元素$C_{pp}$就是对应特征的方差

3. 求解特征值与特征向量

这是PCA的核心步骤,需要解协方差矩阵的特征问题:

  1. 先解特征方程:$\det(C - \lambda I) = 0$,其中$I$是3×3单位矩阵,解出来的$\lambda$就是特征值
    • 三次方程的解法可以用因式分解或者求根公式,最终会得到3个特征值,按从大到小排序为$\lambda_1 \geq \lambda_2 \geq \lambda_3$
  2. 对每个特征值$\lambda_k$,解线性方程组:$(C - \lambda_k I)\vec{v} = 0$,得到对应的特征向量$\vec{v}_k$
  3. 把每个特征向量单位化:将向量的每个元素除以它的L2范数(也就是向量的长度),确保向量模长为1

4. 提取主成分

把特征值从大到小排序后,对应的特征向量就是主成分:

  • 最大的特征值$\lambda_1$对应的单位特征向量$\vec{v}_1$,就是第一主成分
  • 第二大的特征值$\lambda_2$对应的单位特征向量$\vec{v}_2$,就是第二主成分

小验证技巧

算完后可以简单检查:

  • 任意两个主成分向量的点积为0(正交性)
  • 三个特征值的和等于协方差矩阵对角线元素的和(迹)
    如果满足这两点,基本说明你算对了!

内容的提问来源于stack exchange,提问作者mustaphos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:48:14