[英]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.