0

我想创建一个包含 5 个陆地卫星波段的 PCA 来检测变化。我知道如何使用 arcgis,但我可以在 python (jupyter Notebook) 中找到解决方案。我有一个数据数组,其中包含我所有的波段 varibale 和 lon 和 lat。然后我用我的所有波段创建一个数组(使用 np.dstack((dataset_1984.blue, etc.))。之后我不知道如何继续。一些帮助将非常有用。

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)
4

1 回答 1

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)

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

于 2019-07-19T14:00:46.597 回答