降维技术
做过数据竞赛的同学应该都知道,数据集一般是 m × n m \times n m×n维。有时候 n 、 m n、m n、m会非常大,这会让我们的算法运行地非常慢。在某些时候,可以通过减少 n n n方向上的维度,以达到缩减数据、加快程序运行的效果。
那常见的降维方法有:
1、主成分分析(Principal Component Analysis,PCA)。PCA的原理就是将数据转换到了新的坐标系,这个新的坐标系是根据数据算出来的。它选取坐标轴的原则是,优先选取原始数据中方差最大的方向作为轴,且这些轴必须是相互正交。然后根据你的需求决定选取轴的数量,轴越多,数据的原始信息保留的就越完整。
2、因子分析(Factor Analysis)
3、独立成分分析(Idependent Component Analysis,ICA)
利用Numpy实现PCA
计算前 N N N个主成分(即上面说的轴)的计算流程如下:
1.去除平均值
2.计算协方差矩阵
3.计算协方差矩阵的特征值和特征向量
4.将特征值从大到小排序
5.保留最上面的N个特征向量
6.将数据转换到上述N个特征向量构建的新空间当中
#导入依赖库
import numpy as np
from numpy import linalg
def loadDataSet(fileName,delim='\t'):
'''
作用:读取指定文件数据,并返回其矩阵形式
参数:
fileName:文件路径与文件名
delim:分隔符,默认为'\t'
返回:
返回矩阵
'''
fr = open(fileName)
stringArr = [line.strip().split(delim) for line in fr.readlines()]
datArr = [list(map(flo