机器学习-主成分分析PCA

目录

8.1主成分分析

        8.11主成分分析介绍

        8.12主成分分析PCA算法流程

        8.13PCA优缺点

8.2PCA算法实现

        8.22数据准备

        8.23算法实现

8.3实验结果分析与总结

        8.31实验结果分析

        8.32实验结果总结


8.1主成分分析

        8.11主成分分析介绍

       主成分分析PCA是一种广泛使用的数据降维技术,用于减少数据集的维数,同时尽可能保留数据的主要信息。它通过将数据投影到一个新的正交坐标系中,使得新的坐标系中的每个轴(主成分)都是原始数据集中最大方差方向的线性组合。PCA的应用包括数据压缩、特征提取、数据可视化等。

        8.12主成分分析PCA算法流程

        (1)对所有的样本进行中心化处理,满足均值为0的分布

        (2)计算样本的协方差矩阵XX^{T}

        (3)对矩阵XX^{T}进行特征值分解

        (4)取出最大的P个特征值对应的特征向量(w_{1},w_{2},w_{3},...,w_{p}),将所有的特征向量标准化后,组成特征向量矩阵(投影矩阵)W;

        (5)对样本集中的每一个样本x(i),转化为新的样本z(i) = W^{T}x(i);

        (6)得到输出样本集X = (z(1),z(2),z(3),...,z(m))。

        8.13PCA优缺点

优点:PCA能有效减少数据的维度,同时保留大部分变异性,有助于去除噪声;通过正交转换消除了数据的相关性,有助于后续模型的处理和性能提升。

缺点:降维过程中可能会丢失一部分信息,特别是当去除的成分含有重要信息时。

8.2PCA算法实现

        8.22数据准备

        本次实验所导入的包:

import numpy as np

        通过导入numpy包目的是利用其强大的数值计算功能来执行PCA所需的各种操作,提供了高效的数组操作和线性代数计算功能。

        本次实验所准备的数据集        


data = np.array([
    [2.5, 2.4], [0.5, 0.7], [2.2, 2.9], [1.9, 2.2], [3.1, 3.0],
    [2.3, 2.7], [2.0, 1.6], [1.0, 1.1], [1.5, 1.6], [1.1, 0.9]
])

        本次实验利用PCA降维主要是通过将已准备好的二维的数据集,得到降到一维后的数据集

        8.23算法实现

def PCA(data,r):
    data = np.float32(np.mat(data))
    rows,cols = np.shape(data)
    data_mean = np.mean(data,0)
    A=data-np.tile(data_mean,(rows,1))
    C = A*A.T
    D,V=np.linalg.eig(C)
    V_r=V[:,0:r]
    V_r=A.T*V_r
    for i in range(r):
        V_r[:,i]=V_r[:,i]/np.linalg.norm(V_r[:,i])
    final_data = A*V_r
    return final_data,data_mean,V_r
    data = np.float32(np.mat(data))
    rows,cols = np.shape(data)
    data_mean = np.mean(data,0)
    A=data-np.tile(data_mean,(rows,1))

         首先将输入数据转换为NumPy浮点矩阵格式,以确保数据类型一致。接着计算每个特征(列)的均值,结果是一个均值向量。通过减去均值向量,将数据中心化。np.tile用于扩展均值向量,使其与原始数据形状匹配。

 

 图一:中心化后的数据集

    C = A*A.T
    D,V=np.linalg.eig(C)
    V_r=V[:,0:r]
    V_r=A.T*V_r
    for i in range(r):
        V_r[:,i]=V_r[:,i]/np.linalg.norm(V_r[:,i])
    final_data = A*V_r
    return final_data,data_mean,V_r

         中心化后对计算协方差矩阵,这里使用了数据的内积。使用NumPy的linalg.eig函数数计算协方差矩阵的特征值和特征向量。按列选择前r个特征向量作为主成分。并将小矩阵的特征向量转换为大矩阵的特征向量。对特征向量进行归一化处理,使其每列特征向量的长度为1。将数据投影到选择的特征向量上,得到降维后的数据。最后将结果进行返回。

图二:PCA实验结果

8.3实验结果分析与总结

        8.31实验结果分析

        通过本次实验可以得到:

                降维后的数据:降维后的数据保留了原始数据中的主要信息,但减少了维度,从而降低了数据复杂性。

                均值向量:均值向量 [1.81,1.91]表示数据集中每个特征的平均值。数据中心化处理确保了降维后的数据是以均值为中心。

                特征向量:特征向量 [0.6778733,0.73517866] 表示最大方差方向。降维后的数据是原始数据在这个特征向量方向上的投影。

        通过实验可以看出,PCA有效地将原始二维数据集降维到一维。降维后的数据集中保留了原始数据的主要信息,而均值向量和特征向量帮助我们理解数据的变异性方向和中心位置。PCA在减少数据维度的同时,最大程度上保留了数据的方差信息,使得降维后的数据仍然具有代表性。在本次实验中可以认识到PCA主成分分析能够简化数据结构,去除冗余信息,增强数据处理和分析的效率。通过这次实验,我们了解了PCA的基本原理、算法流程以及实际应用过程。

        8.32实验结果总结

        在本次主成分分析的实验中,学会了人用主成分分析PCA来实现数据降维的基本方法,也对其中所涉及和应用到的协方差矩阵,特征向量分解,有了自己的认识,PCA通过计算数据的协方差矩阵并对其进行特征值分解,找出了数据中方差最大的方向。

        总体而言,通过实验不仅学习了PCA的具体实现步骤和算法原理,更重要的是理解了其作为一种经典的数据预处理和分析工具,为我们处理复杂数据和提升分析效率提供了新的思路和方法。

        

        

        

  • 19
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值