PCA
主成分分析(Principal components analysis,PCA),维基百科给出一个较容易理解的定义:“PCA是一个正交化线性变换,把数据变换到一个新的坐标系统中,使得这一数据的任何投影的第一大方差在第一个坐标(称为第一主成分)上,第二大方差在第二个坐标(第二主成分)上,依次类推,具体来说,在欧几里得空间给定一组点数,第一主成分对应于通过多维空间平均点的一条线,同时保证各个点到这条直线距离的平方和最小。去除掉第一主成分后,用同样的方法得到第二主成分。依此类推。在Σ中的奇异值均为矩阵 XXT的本征值的平方根。每一个本征值都与跟它们相关的方差是成正比的,而且所有本征值的总和等于所有点到它们的多维空间平均点距离的平方和。”。
PCA经常用于减少数据集的维数,同时保持数据集中的对方差贡献最大的特征,降维能减少预测变量的个数,提高变量之间的独立性(不相关性),用低的维数空间来解释高维数空间,其核心思想是将原来众多具有一定相关性,重新组合成一组新的互相无关的综合指标来代替原来的指标。
使用PCA的好处在于:我们可以对新求出的“主元”向量的重要性进行排序,根据需要取前面最重要的部分,将后面的维数省去,可以达到降维从而简化模型或是对数据进行压缩的效果,同时最大程度的保持了原有数据的信息,较低的维数意味着运算量的减少,在数据较多的情况带来的性能提高更明显。
我们使用PCA取图片特征码后,可以用神经网络 和SVM进行训练。
下面是应用PCA取图片特征码
for now_h in xrange(0,h,h_interval): for now_w in xrange(0,w,w_interval): b = img[now_h:now_h+h_interval,now_w:now_w+w_interval,0] g = img[now_h:now_h+h_interval,now_w:now_w+w_interval,1] r = img[now_h:now_h+h_interval,now_w:now_w+w_interval,2] btz=np.mean(b) gtz=np.mean(g) rtz=np.mean(r) alltz.append([btz,gtz,rtz]) result_alltz=np.array(alltz).T pca = mlpy.PCA() pca.learn(result_alltz) result_alltz = pca.transform(result_alltz, k=len(result_alltz)/2) result_alltz =result_alltz.reshape(len(result_alltz))