繁体   English   中英

如何从python中的Landat数据对多个波段进行PCA分析?

[英]How to perform a PCA analysis for multiple bands from landsat data in python?

我想创建一个由5个陆地卫星带组成的PCA,以检测变化。 我知道如何使用arcgis,但可以在python(jupyter Notebook)中找到解决方案。 我的所有乐队都有varibale和lon和lat。 然后,我用所有频带创建一个数组(使用np.dstack((dataset_1984.blue,等等。))。此后结束,我不知道如何继续,一些帮助将非常有用。

stacked = np.dstack((dataset_1984.blue,dataset_1984.green,dataset_1984.red,dataset_1984.nir,dataset_1984.swir1))

创建:

array([[[ 348,  502,  397, 2974, 1370],
        [ 348,  502,  397, 2974, 1370],
        [ 368,  502,  397, 3270, 1370],
        ..., 
        [ 603,  887,  843, 3121, 2082],
        [ 603,  887,  843, 3121, 2082],
        [ 738, 1172, 1380, 2364, 2456]],

       [[ 369,  544,  471, 2889, 1399],
        [ 388,  627,  507, 3354, 1833],
        [ 388,  627,  507, 3354, 1833],
        ..., 
        [ 680, 1009, 1165, 2575, 2715],
        [ 680, 1009, 1165, 2575, 2715],
        [ 757, 1172, 1416, 2279, 2743]],

接着:

data = stacked - np.mean(stacked, axis=0)
data.shape
(353, 588, 5)

欢迎来到Stackoverflow!

您可以使用scikit-learn来完成此任务:

import numpy as np
from sklearn.decomposition import PCA

pca = PCA(n_components=2)
pca.fit(data)  
PCA(copy=True, iterated_power='auto', n_components=2, random_state=None, svd_solver='auto', tol=0.0, whiten=False)

之后, 此处提到的方法之一将帮助您可视化此数据或推断更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM