Python遥感数据主成分分析
2016-01-25 22:38
821 查看
原文:http://www.cnblogs.com/leonwen/p/5158947.html
该算法由MatLab移植而来(具体参见上一篇博文)。但是最终输出结果却和MatLab不一致,经排查发现在进行调用两者内部函数eig进行求解特征值和特征向量的时候,两者特征值都一致,但是特征向量却不同。
可是,从理论上感觉也说得过去,因为特征向量本来就具有不唯一性。最让人费解的是,就算两者特征向量不一致,可为什么使用PCA的结果却反差很大呢?感觉上来看,好像是Python的不准确行更大一点。
代码如下:
结果显示:
原始数据显示
PCA主成分分析结果输出
可能是我自己的原因吧,正在排查,哪位大神指导还望课指导鄙人一下~先就此谢过~O(∩_∩)O~
该算法由MatLab移植而来(具体参见上一篇博文)。但是最终输出结果却和MatLab不一致,经排查发现在进行调用两者内部函数eig进行求解特征值和特征向量的时候,两者特征值都一致,但是特征向量却不同。
可是,从理论上感觉也说得过去,因为特征向量本来就具有不唯一性。最让人费解的是,就算两者特征向量不一致,可为什么使用PCA的结果却反差很大呢?感觉上来看,好像是Python的不准确行更大一点。
代码如下:
# -*- coding: utf-8 -*- """ Created on Tue Jan 12 21:45:57 2016 @author: 文核 """ import os from PIL import Image from numpy import * from pylab import * path = r'D:\Projects\PythonProj\ImageProcessing\2012' sst_dir = os.listdir(path) file_len = len(sst_dir) sst_list = [] for i in range(file_len): str = path + '\\' + sst_dir[i] #txt = open(str).read() sst_list.append(str) immatrix = [] for im in sst_list: text = loadtxt(im) immatrix.append(text) immatrix = array(immatrix) # 显示输出 figure() gray() for i in range(file_len): subplot(3,4,i + 1) pic = immatrix[i].reshape(180,360) pic = pic[::-1] # picshow = rot90(pic,4) imshow(pic) colorbar() show() # 转换成样本总体 X = immatrix.T # 获取要本大小 m,n = X.shape[0:2] # 取得各个样本均值 meanVal = mean(X,axis = 0) #tempMean = tile(meanVal,(64800,1)) # 样本矩阵去中心化 X = X - tile(meanVal,(64800,1)) # 计算协方差 S = dot(X.T,X) / (m - 1) # 计算特征值eg和特征向量Ev eg,Ev = linalg.eig(S) #eg1,Ev1 = linalg.eigh(S) # 这两种算法存在排序区别,eigh返回结果由小到大 # 计算新的成分 Y = dot(immatrix.T,Ev) figure() gray() for i in range(n): subplot(3,4,i + 1) out = Y[:,i] outpic = out.reshape(180,360) outpic = outpic[::-1] imshow(outpic) colorbar() show()
结果显示:
原始数据显示
PCA主成分分析结果输出
可能是我自己的原因吧,正在排查,哪位大神指导还望课指导鄙人一下~先就此谢过~O(∩_∩)O~
相关文章推荐
- python打印等腰三角形
- 让python在hadoop上跑起来
- python下文件的批量复制
- Python基本代码
- Python -- 装饰器
- python小白-day4迭代器和生成器
- 《笨办法学Python》 第23课手记
- 【python脚本收集】全角半角转换
- python,numpy matplotlib WIN7 64位 安装教程
- Cisco Syslog 处理
- 【Python】抓取拉勾网全国Python的招聘信息
- python调试
- python 条件判断与循环
- python数字图像处理(15):霍夫线变换
- python 文件操作
- Python学习之--python概要
- python collections 系列
- Python、PIP环境变量的配置
- 让python在hadoop上跑起来
- python cmd命令调用