Python处理高光谱数据#3 降维

基于Python的高光谱降维操作

  • 高光谱数据:点击此处可下载
  • 用到的库:matplotlib、scipy、spectral
  • 主要内容:主成分分析(PCA)与线性判别(LDA)

欢迎有兴趣的朋友交流指点。最后,废话不多说直接上代码😄

import matplotlib.pyplot as plt
from scipy.io import loadmat
import spectral as spy


# PCA主成分分析
def pca_dr(src):
    pc = spy.principal_components(src)
    pc_98 = pc.reduce(fraction=0.98)  # 保留98%的特征值
    print(len(pc_98.eigenvalues))  # 剩下的特征值数量
    spy.imshow(data=pc.cov, title="pc_cov")
    img_pc = pc_98.transform(input_image)  # 把数据转换到主成分空间
    spy.imshow(img_pc[:, :, :3], stretch_all=True)  # 前三个主成分显示
    return img_pc


# LDA线性判别
def lda_dr(src, gt):
    classes = spy.create_training_classes(src, gt)
    fld = spy.linear_discriminant(classes)
    print(len(fld.eigenvalues))
    img_fld = fld.transform(src)
    spy.imshow(img_fld[:, :, :3])
    return img_fld


input_image = loadmat('D:/Hyper/Indian_pines_corrected.mat')['indian_pines_corrected']
gt = loadmat("D:/Hyper/Indian_pines_gt.mat")['indian_pines_gt']

pca_dr(input_image)
lda_dr(input_image, gt)

plt.pause(60)

spy.principal_components计算数据的主成分,并返回一个主成分的平均值、协方差、特征值和特征向量。该对象还包含一个将数据旋转到主成分空间的变换方法,以及一个将特征向量数量减小的方法。

PCA:

在这里插入图片描述

在这里插入图片描述

LDA:

在这里插入图片描述

在这里插入图片描述

  • 6
    点赞
  • 99
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值