【机器学习】主成分分析法求数据前n个主成分

一、摘要

本文详细讲解了主成分分析法的原理及应用,包括如何通过梯度上升法求出一组数据的前n个主成分。介绍了主成分分析法如何从一个坐标系转换到另一个坐标系,通过逐步去除数据在已有主成分上的分量,求出新的主成分。具体涉及二维数据到高维数据的处理,以及如何通过编程实现主成分分析。最后,阐述了主成分分析法在降维方面的应用,并强调了该方法在数据处理和分析中的重要性。

二、主成分分析法的概述

  1. 主成分分析法用于求出一组数据的第一主成分,即一个坐标轴方向,使得样本点在该轴上的方差最大。
  2. 第一主成分将样本点映射到该轴上,保留了样本点之间的最大方差。
  3. 对于N维数据,主成分分析法会重新排列n个轴,使得第一个轴保持最大的方差,第二个轴次之,依此类推。

三、求下一个主成分的方法

  1. 求出第一主成分后,可以通过将数据在第一主成分上的分量去掉,然后求出下一个主成分。
  2. 通过将样本点减去其在第一主成分上的投影,得到新的数据样本
  3. 在新数据样本上重新求第一主成分,即可得到原来的数据的第二个主成分。
  4. 具体公式如下所示:
    在这里插入图片描述
    解释该图片的含义
    在这里插入图片描述
    在这里插入图片描述
    这是主成分分析中 “剔除第一主成分分量” 的操作示意图,核心逻辑如下:
    • 主成分方向:向量 w 代表第一个主成分(方差最大的方向),是数据分布最显著的特征方向。
    • 投影计算:
      在这里插入图片描述
    • 剔除主成分:
      在这里插入图片描述

四、编程实现主成分分析法

  1. 加载库和虚拟测试数据,对原始数据进行预处理。

    1. 导入库
      import numpy as np  
      import matplotlib.pyplot as plt  
      
    2. 生成模拟数据
      X = np.empty((100, 2))  
      X[:,0] = np.random.uniform(0., 100., size=100)  
      X[:,1] = 0.75 * X[:,0] + 3. + np.random.normal(0, 10., size=100)  
      
      创建一个形状为 (100, 2) 的空数组 X,表示 100 个二维数据点。
      X[:,0]:第一列数据服从 [0, 100) 的均匀分布,模拟第一个特征。
      X[:,1]:第二列数据基于第一列的线性关系(0.75 * X[:,0] + 3),并添加均值为 0、标准差为 10 的正态分布噪声,模拟第二个特征与第一个特征的相关性。
    3. 定义去均值函数并处理数据
      def demean(X):  
          return X - np.mean(X, axis=0)  
      X = demean(X)  
      
      demean 函数:通过减去每列的均值(np.mean(X, axis=0)),对数据进行中心化(去均值),这是主成分分析(PCA)的预处理步骤,确保数据围绕原点分布,便于后续计算主成分。
      X = demean(X):对生成的原始数据 X 应用去均值处理。
    4. 可视化数据
      plt.scatter
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安楠数智人生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值