• PCA主成分分析


    主成分分析

    PCA:principal component analysis
    主成分分析是最常用的一种降维分析
    目的:降低数据的复杂性,找到最有用的特征
    降维:

    • PCA
    • FA 因子分析 factor analysis
    • ICA 独立成分分析 independent component analysis

    PCA概述:
    将数据从原来的坐标系转换到新的坐标系,新坐标的选择和数据本身相关。第一个新坐标轴是原数据中方差最大的方向,第二个坐标选择和第一个坐标正交且具有最大方差的方向。

    数据最大方差方向

    方差最大,就是数据差异性最大
    计算协方差矩阵&特征值分析

    特征值分析

    [A u=lambda u ]

    特征值(lambda)和特征向量( u)
    可以使用Numpy中linalg模块的eig()

    numpy.linalg.eig(a)
    # Compute the eigenvalues and right eigenvectors of a square array.
    
    from numpy import linalg as LA
    w, v = LA.eig(np.diag((1, 2, 3)))
    w; v
    """
    array([ 1.,  2.,  3.])
    array([[ 1.,  0.,  0.],
           [ 0.,  1.,  0.],
           [ 0.,  0.,  1.]])
    """
    

    使用numpy实现PCA

    """
    created dec,6 2018
    @author  dengshuo
    implement the pca with numpy
    """
    
    # import packages
    from numpy import *
    
    # load the data
    def loadDataSet(filename):
    	fr=open(filename)
    	lineStr=[line.strip().split('	') for line in fr.readlines()]
    	dataArr=[list(map(float,line)) for line in lineStr] 
    	# 一般涉及到 map函数都要加上一个 list来实现
    	return mat(dataArr)
    
    def PCA(datamat,topNFeat=9999999):
    	meanVal=mean(datamat,axis=0)
    	# 数据全部减去平均值
    	mean_reduce=datamat-meanval
    	# 使用协方差矩阵
    	cov_mat=cov(mean_reduce,rowvar=0)   # 参考 dash cov的手册
    	eigVal,eigVector=linalg.eig(mat(cov_mat))
    	# 将特征值进行排序,升序排序
    	# 注意这个返回的 是其在原数组中下标
    	eigValInOrder=argsort(eigVal)
    	eigValInOrder=eigValInOrder[:-(topNFeat+1):-1]
    	redEigVector=eigVector[:,eigValInOrder]
    	# 将数据转换到原空间
    	lowDataMat=mean_reduce*redEigVector
    	reconMat=(lowDataMat*redEigVector.T)+meanVal
    	return lowDataMat,reconMat
    
    if __name__ == '__main__':
    	t=loadDataSet('testSet.txt')
    	print("{}".format(t))
    
    不要用狭隘的眼光看待不了解的事物,自己没有涉及到的领域不要急于否定. 每天学习一点,努力过好平凡的生活.
  • 相关阅读:
    集合选数
    二分答案入门乱讲
    浅谈搜索剪枝
    数位DP
    RMQ问题与ST算法
    计数排序与基数排序
    主席树/函数式线段树/可持久化线段树
    树链剖分
    LCA问题
    树的直径、树的重心与树的点分治
  • 原文地址:https://www.cnblogs.com/GeekDanny/p/10078196.html
Copyright © 2020-2023  润新知