• PCA算法(python版本)


    原理

    PCA算法,全程主成分分析法,是一种非监督的算法;主要用于数据的姜维,通过将为可以用较为简单的特征来代替原来的特征,在分类任务中可以使用PCA算法进行特征降维,然后减小计算量;

    算法流程

    在这里插入图片描述

    特性

    1. 得到的奇异值分解的结果中,最大特征值对应的特征向量就是PCA得到的主方向,而且将所有的点映射到这个向量上得到到映射后的新点集方差最大,所以主方向可以最大程度保留数据的原始特性;

    2. 最小特征值对应的特征向量为法向量方向,法向量的起点为用于求奇异值分解点集的中心点;且法向量越大的点处曲率越小

    3) 在求某点法向量的时候,需要确定该点的邻域半径,然后使用邻域内的点组成的点集来计算法法向量;半径选择太大,会受到不相关部分影响,导致法向量平滑;半径过小会容易受到噪声影响;半径不仅可以使用欧式空间邻域,同样可以使用其他尺度的邻域,包括反射率邻域,颜色邻域等;

    PCA求主方向python代码

    import numpy as np
    def PCA(data):
        data_col = np.mean(data,axis = 0)
        data = data - data_col
        B = np.dot(data.T,data)#计算协方差矩阵
        eigenvectors,eigenvalues, v = np.linalg.svd(B)#计算协方差矩阵的特征值和特征向量
        sort = eigenvalues.argsort() #argsort返回列表从大到小排序之后在原始列表中的位置
        eigenvalues = eigenvalues[sort]
        eigenvectors = eigenvectors[:, sort]
        return  eigenvectors
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    法向量python,使用sklearn建树

    def get_normals():
        normals = []
        radius = 0.05
        leaf_size = 5  
        tree = KDTree(points,leaf_size)
        near_point_idx = tree.query_radius(points,radius)#每一点的邻居点索引,包含自身点
        
        for i in range(points.shape[0]):
            point_near = points[near_point_idx[i]] #某一点的邻居点,
            v = PCA(point_near)
            normal = v[:,2]
            normals.append(normal)
        normals = np.asarray(normals)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    PCA算法的局限

    1. 如果用户对观测对象有一定的先验知识,掌握了数据的一些特征,却无法通过参数化等方法对处理过程进行干预,可能会得不到预期的效果,效率也不高;

    2. 特征值分解有一些局限性,比如变换的矩阵必须是方阵;

    3. 在非高斯分布情况下,PCA方法得出的主元可能并不是最优的。

    PCA算法应用:

    1. 高维数据集的探索与可视化。
    2. 数据压缩。
    3. 数据预处理。
    4. 图象、语音、通信的分析处理。
    5. 降维(最主要),去除数据冗余与噪声。
  • 相关阅读:
    vue3 hook库
    lectin
    JavaScript 笔记| 青训营笔记
    测试团队的第一次测试,我们需要做哪些准备?
    磁场设备—螺线管
    机器学习——实践
    C++ 洛谷题 · P1720 斐波那契数列
    OPPO粟俊娥:OPPO研发云持续交付实践之路
    计算机毕业设计(85)php小程序毕设作品之共享会议室预约小程序系统
    LVS(Linux Virtual Server)集群,(1)NAT模式
  • 原文地址:https://blog.csdn.net/qhu1600417010/article/details/126225217