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

时间:2019-07-19 13:15:51

标签: python pca landsat

我想创建一个由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)

1 个答案:

答案 0 :(得分:0)

欢迎来到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)

这样做之后,here中提到的一种方法将帮助您可视化此数据或推断出更多信息。