实验需要提取数据的空间信息,所以要对光谱进行降维,使用主成分分析算法,样例代码备份如下

  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Mon Feb 18 10:35:43 2019
  4.  
  5. @author: admin
  6. """
  7.  
  8. import numpy as np
  9. from scipy.io import loadmat
  10. #import spectral
  11. from sklearn.decomposition import PCA
  12.  
  13. input_hsi = loadmat('dataset/huston/houston15.mat')['data']
  14. input_lidar=loadmat('dataset/huston/houston_Lidar15.mat')['data']
  15. train_label = loadmat('dataset/huston/houston15_mask_train.mat')['mask_train']
  16. test_label=loadmat('dataset/huston/houston15_mask_test.mat')['mask_test']
  17.  
  18. #高光谱降维处理
  19. array_x1=input_hsi.reshape(np.prod(input_hsi.shape[:2]),np.prod(input_hsi.shape[2:]))
  20. pca=PCA(n_components=30)
  21. array_x2=pca.fit_transform(array_x1)
  22. print(array_x2.shape)
  23. pca_hsi=array_x2.reshape(input_hsi.shape[0],input_hsi.shape[1],array_x2.shape[1])
  24.  
  25. print('hsi shape:',input_hsi.shape)
  26. print('pca hsi shape:',pca_hsi.shape)
  27. print('lidar shape:',input_lidar.shape)

  实验数据是houston高光谱数据和lidar数据,数据的原始维度和降维后的维度如下图所示

 在进行pac降维之前需要先对实验reshape,因为pca只支持二维数据降维,将前两维(平面)reshape成列向量就变成了(664845,30),降维结束后再reshape回去,注意reshape时候第三个维度已经不是原来的144维了,所以在reshape回去时这样写是会报错的。input_hsi.shape[2]是原始数据的第三个维度为144,正确数值是30,即降维之后的维度,也就是array_x2.shape[1]

  1. array_x3=array_x2.reshape(input_hsi.shape[0],input_hsi.shape[1],input_hsi.shape[2])

  

PCA降维实验代码的更多相关文章

  1. PCA 降维算法详解 以及代码示例

    转载地址:http://blog.csdn.net/watkinsong/article/details/38536463 1. 前言 PCA : principal component analys ...

  2. Python机器学习笔记 使用scikit-learn工具进行PCA降维

    之前总结过关于PCA的知识:深入学习主成分分析(PCA)算法原理.这里打算再写一篇笔记,总结一下如何使用scikit-learn工具来进行PCA降维. 在数据处理中,经常会遇到特征维度比样本数量多得多 ...

  3. 一步步教你轻松学主成分分析PCA降维算法

    一步步教你轻松学主成分分析PCA降维算法 (白宁超 2018年10月22日10:14:18) 摘要:主成分分析(英语:Principal components analysis,PCA)是一种分析.简 ...

  4. [学习笔记] numpy次成分分析和PCA降维

    存个代码,以后参考. numpy次成分分析和PCA降维 SVD分解做次成分分析 原图: 次成分复原图: 代码: import numpy as np from numpy import linalg ...

  5. 关于PCA降维中遇到的python问题小结

    由于论文需要,开始逐渐的学习CNN关于文本抽取的问题,由于语言功底不好,所以在学习中难免会有很多函数不会用的情况..... ̄へ ̄ 主要是我自己的原因,但是我更多的把语言当成是一个工具,需要的时候查找就 ...

  6. sklearn pca降维

    PCA降维 一.原理 这篇文章总结的不错PCA的数学原理. PCA主成分分析是将原始数据以线性形式映射到维度互不相关的子空间.主要就是寻找方差最大的不相关维度.数据的最大方差给出了数据的最重要信息. ...

  7. PCA降维2

    前言 本文为模式识别系列第一篇,主要介绍主成分分析算法(Principal Component Analysis,PCA)的理论,并附上相关代码.全文主要分六个部分展开: 1)简单示例.通过简单的例子 ...

  8. 机器学习算法-PCA降维技术

    机器学习算法-PCA降维 一.引言 在实际的数据分析问题中我们遇到的问题通常有较高维数的特征,在进行实际的数据分析的时候,我们并不会将所有的特征都用于算法的训练,而是挑选出我们认为可能对目标有影响的特 ...

  9. PCA原理及其代码实现

    首先简述一下PCA的作用: PCA是一种线性降维方法,它的目标i是通过某种线性投影,将高维的数据映射到低维空间中,并期望在所投影的维度上数据的信息量最大(方差最大),以此使用较少的数据维度,同时保留较 ...

随机推荐

  1. php curl抓取类分享

    class UsualFunForNetWorkHelper { /*** * post请求数据 */ public static function HttpsPost($url, $data = n ...

  2. 错误:libstdc++.so.6: wrong ELF class

    1.安装mysql的时候报错缺少GLIBCXX_3.4.15 2.按照网上的下载了libstdc++.so.6.0.17 放到/usr/lib64 下 删除之前的libstdc++.so.6的链接 重 ...

  3. 转:JMeter监控内存及CPU ——plugin插件监控被测系统资源方法

    JMeter监控内存及CPU ——plugin插件监控被测系统资源方法 jmeter中也可以监控服务器的CPU和内存使用情况,但是需要安装一些插件还需要在被监测服务器上开启服务. 1.需要的插件准备 ...

  4. Java 后台验证的工具类

    Java 后台验证的工具类 public class ValidationUtil {         //手机号     public static String mobile = "^( ...

  5. Math的方法;Date的方法;

    Math的方法: (1)弧度的π  Math.PI() (2)返回平方根 Math.sqrt() (3)返回x的绝对值 Mathabs(x) (4)返回x的上舍入 Math.ceil(x) (5)返回 ...

  6. vs2015调试断点无法命中

    问题描述: 我是从vc6.0的原工程导入的,用vs2015编译,在断点调试的时候遇到问题,断点无法命中; 修改方法:工程->属性->C/C++ 常规->调试信息格式->设置为C ...

  7. python 去除字符串末尾的子串

    建议使用 "字符串".replace("要去除的字符串", "") 尽量不要使用 strip() ,有时会引入意想不到的结果.strip() ...

  8. OpenSessionViewFilter

    OpenSessionViewFilter是spring提供的一个针对hibernate的一个支持类,其主要的意思是=在发起一个页面请求的时候打开session,并且保持session直到请求结束,具 ...

  9. POI 导出

    package com.baoqilai.scp.service; import java.io.File; import java.io.FileOutputStream; import java. ...

  10. 11.5 vmstat:虚拟内存统计

    vmstat vmstat是Virtual Memory Statistics(虚拟内存统计)的缩写,利用vmstat命令可以对操作系统的内存信息.进程状态和CPU活动等进行监视.但是只能对系统的整体 ...