Google Earth Engine(GEE)——协方差、特征值、特征向量主成分分析(部分)

简介: Google Earth Engine(GEE)——协方差、特征值、特征向量主成分分析(部分)


主成分(PC)的变换(又称为Karhunen-Loeve变换)是一种光谱转动所需要的光谱相关的图像数据,并输出非相关数据。PC 变换通过特征分析对输入频带相关矩阵进行对角化来实现这一点。要在 Earth Engine 中执行此操作,请在阵列图像上使用协方差缩减器并eigen()在结果协方差阵列上使用该命令。为此目的考虑以下函数(这是完整示例的一部分 ):

先看函数:

eigen()特征向量

计算 A 行 A 列的二维方形数组的实数特征向量和特征值。返回一个包含 A 行和 A+1 列的数组,其中每一行在第一列中包含一个特征值,在其余 A 列中包含相应的特征向量。行按特征值降序排列。
此实现使用来自 https://ejml.org 的 DecompositionFactory.eig()。


Computes the real eigenvectors and eigenvalues of a square 2D array of A rows and A columns. Returns an array with A rows and A+1 columns, where each row contains an eigenvalue in the first column, and the corresponding eigenvector in the remaining A columns. The rows are sorted by eigenvalue, in descending order.

This implementation uses DecompositionFactory.eig() from https://ejml.org.


Arguments:

this:input (Array):

输入(数组):
用于计算特征值分解的二维方形数组。

A square, 2D array from which to compute the eigenvalue decomposition.


Returns: Array

ee.Reducer.centeredCovariance()

创建一个 reducer,将一些长度相同的一维数组减少到 NxN 形状的协方差矩阵。警告:此reducer 要求数据以均值为中心。

Creates a reducer that reduces some number of 1-D arrays of the same length N to a covariance matrix of shape NxN. WARNING: this reducer requires that the data has been mean centered.


No arguments.

Returns: Reducer

matrixMultiply(image2)矩阵乘法

返回 image1 和 image2 中每个匹配的波段对的矩阵乘法 A*B。如果 image1 或 image2 只有 1 个波段,则将其用于另一个图像中的所有波段。如果图像具有相同数量的波段,但名称不同,则它们按自然顺序成对使用。输出波段以两个输入中较长的命名,或者如果它们的长度相等,则按 image1 的顺序命名。输出像素的类型是输入类型的并集。

Returns the matrix multiplication A*B for each matched pair of bands in image1 and image2. If either image1 or image2 has only 1 band, then it is used against all the bands in the other image. If the images have the same number of bands, but not the same names, they're used pairwise in the natural order. The output bands are named for the longer of the two inputs, or if they're equal in length, in image1's order. The type of the output pixels is the union of the input types.


Arguments:

this:image1 (Image):

The image from which the left operand bands are taken.

image2 (Image):

The image from which the right operand bands are taken.


Returns: Image

代码:

构建一个函数,包含协方差计算,转换数组
var getPrincipalComponents = function(centered, scale, region) {
  // 将图像的波段折叠成每个像素的一维阵列。
  var arrays = centered.toArray();
  // 计算区域内波段的协方差。
  var covar = arrays.reduceRegion({
    reducer: ee.Reducer.centeredCovariance(),
    geometry: region,
    scale: scale,
    maxPixels: 1e9
  });
  // 获取“数组”协方差结果并转换为数组。
  // 这表示区域内的带间协方差。
  var covarArray = ee.Array(covar.get('array'));
  // 执行特征分析并将值和向量分开。
  var eigens = covarArray.eigen();
  // 这是特征值的 P 长度向量。
  var eigenValues = eigens.slice(1, 0, 1);
  // 这是一个在行中具有特征向量的 PxP 矩阵。
  var eigenVectors = eigens.slice(1, 1);
  // 将数组图像转换为二维数组以进行矩阵计算。
  var arrayImage = arrays.toArray(1);
  // 左乘图像数组乘以特征向量矩阵。
  var principalComponents = ee.Image(eigenVectors).matrixMultiply(arrayImage);
  // 将特征值的平方根转换为 P 波段图像。
  var sdImage = ee.Image(eigenValues.sqrt())
      .arrayProject([0]).arrayFlatten([getNewBandNames('sd')]);
  // 将 PC 转换为 P 波段图像,由 SD 归一化。
  return principalComponents
      // Throw out an an unneeded dimension, [[]] -> [].
      .arrayProject([0])
      // Make the one band array image a multi-band image, [] -> image.
      .arrayFlatten([getNewBandNames('pc')])
      // Normalize the PCs by their SDs.
      .divide(sdImage);
};
// 这个函数基本上涵盖了主成分分析和归一化的过程


相关文章
|
6月前
|
数据可视化 定位技术 Sentinel
如何用Google Earth Engine快速、大量下载遥感影像数据?
【2月更文挑战第9天】本文介绍在谷歌地球引擎(Google Earth Engine,GEE)中,批量下载指定时间范围、空间范围的遥感影像数据(包括Landsat、Sentinel等)的方法~
2403 1
如何用Google Earth Engine快速、大量下载遥感影像数据?
|
6月前
|
机器学习/深度学习 自然语言处理 对象存储
[wordpiece]论文分析:Google’s Neural Machine Translation System
[wordpiece]论文分析:Google’s Neural Machine Translation System
83 1
|
6月前
|
存储 编解码 数据可视化
Google Earth Engine获取随机抽样点并均匀分布在栅格的不同数值区中
【2月更文挑战第14天】本文介绍在谷歌地球引擎(Google Earth Engine,GEE)中,按照给定的地表分类数据,对每一种不同的地物类型,分别加以全球范围内随机抽样点自动批量选取的方法~
556 1
Google Earth Engine获取随机抽样点并均匀分布在栅格的不同数值区中
|
6月前
|
机器学习/深度学习 数据采集 数据可视化
R语言Pearson相关性分析降雨量和“外卖”谷歌搜索热度google trend时间序列数据可视化
R语言Pearson相关性分析降雨量和“外卖”谷歌搜索热度google trend时间序列数据可视化
|
6月前
|
数据可视化 搜索推荐 数据挖掘
R语言Pearson相关性分析就业率和“性别平等”谷歌搜索热度google trend时间序列数据可视化
R语言Pearson相关性分析就业率和“性别平等”谷歌搜索热度google trend时间序列数据可视化
|
6月前
|
数据可视化 数据挖掘 数据建模
R语言指数平滑法holt-winters分析谷歌Google Analytics博客用户访问时间序列数据
R语言指数平滑法holt-winters分析谷歌Google Analytics博客用户访问时间序列数据
|
6月前
|
API Go 网络架构
GEE Colab——如何从本地/Google云盘/Google Cloud Storage (GCS)上传和下载
GEE Colab——如何从本地/Google云盘/Google Cloud Storage (GCS)上传和下载
321 4
|
6月前
|
编解码 人工智能 算法
Google Earth Engine——促进森林温室气体报告的全球时间序列数据集
Google Earth Engine——促进森林温室气体报告的全球时间序列数据集
86 0
|
6月前
|
编解码 人工智能 数据库
Google Earth Engine(GEE)——全球道路盘查项目全球道路数据库
Google Earth Engine(GEE)——全球道路盘查项目全球道路数据库
132 0
|
6月前
|
编解码
Open Google Earth Engine(OEEL)——matrixUnit(...)中产生常量影像
Open Google Earth Engine(OEEL)——matrixUnit(...)中产生常量影像
76 0

热门文章

最新文章