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

# -*- coding: utf-8 -*-
"""
Created on Mon Feb 18 10:35:43 2019 @author: admin
""" import numpy as np
from scipy.io import loadmat
#import spectral
from sklearn.decomposition import PCA input_hsi = loadmat('dataset/huston/houston15.mat')['data']
input_lidar=loadmat('dataset/huston/houston_Lidar15.mat')['data']
train_label = loadmat('dataset/huston/houston15_mask_train.mat')['mask_train']
test_label=loadmat('dataset/huston/houston15_mask_test.mat')['mask_test'] #高光谱降维处理
array_x1=input_hsi.reshape(np.prod(input_hsi.shape[:2]),np.prod(input_hsi.shape[2:]))
pca=PCA(n_components=30)
array_x2=pca.fit_transform(array_x1)
print(array_x2.shape)
pca_hsi=array_x2.reshape(input_hsi.shape[0],input_hsi.shape[1],array_x2.shape[1]) print('hsi shape:',input_hsi.shape)
print('pca hsi shape:',pca_hsi.shape)
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]

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. AI大道理头尾标识

    标题 点击上方“AI大道理”,选择“置顶”公众号 重磅干货,深入讲解AI大道理 —————— 正文 —————— 浅谈则止,深入理解AI大道理 扫描下方“AI大道理”,选择“关注”公众号 欢迎加入!

  2. php 安装gzip

    https://jingyan.baidu.com/article/636f38bb3e538ad6b84610e6.html http://w3cgeek.com/configure-error-p ...

  3. Hibernate Generic DAO的介绍安装和使用

    java 的包挺多,比c#多 . jar包一个名,解压缩出来又出来又叫另一个名 .搜索起来,内容都分散的很 http://mvnrepository.com  maven库搜索 com.googlec ...

  4. Loadrunner登录判断

    loadrunner判断登录是否成功,以下方法可以解决:1.利用添加检查点web_reg_find函数的方法---------------------------- lr_start_transact ...

  5. Java集合:ArrayList的实现原理

    Java集合---ArrayList的实现原理   目录: 一. ArrayList概述 二. ArrayList的实现 1) 私有属性 2) 构造方法 3) 元素存储 4) 元素读取 5) 元素删除 ...

  6. 2019.02.21 bzoj5317: [Jsoi2018]部落战争(凸包+Minkowski和)

    传送门 题意:qqq次询问把一个凸包整体加一个向量(x,y)(x,y)(x,y)之后是否与另外一个凸包相交. 思路:转化一下发现只要会求A+B={v⃗=a⃗+b⃗∣a⃗∈A,b⃗∈B}A+B=\{\v ...

  7. python模块:hmac

    """HMAC (Keyed-Hashing for Message Authentication) Python module. Implements the HMAC ...

  8. [ 9.22 ]CF每日一题系列—— 484A Bits

    Description: 给你一个l,r的区间让你找一个最小的x并且其二进制数要包含最多的1位,输出它的十进制 Solution: 我本来就是贪心,但是贪大了,想1一直往上添加1,但是忘记了0在中间的 ...

  9. 微服务日志之Spring Boot Kafka实现日志收集

    前言 承接上文( 微服务日志之.NET Core使用NLog通过Kafka实现日志收集 https://www.cnblogs.com/maxzhang1985/p/9522017.html ).NE ...

  10. 制作Visual Studio 2019 (VS 2019) 离线安装包

    与制作Visual Studio 2017的离线安装包(https://www.cnblogs.com/danzhang/p/6534341.html)类似,可以使用--layout的参数在安装前先下 ...