當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python SciPy spatial.procrustes用法及代碼示例

本文簡要介紹 python 語言中 scipy.spatial.procrustes 的用法。

用法:

scipy.spatial.procrustes(data1, data2)#

Procrustes 分析,兩個數據集的相似性測試。

每個輸入矩陣都是一組點或向量(矩陣的行)。空間的維度是每個矩陣的列數。給定兩個大小相同的矩陣,procrustes 將兩者標準化:

  • 兩組點都以原點為中心。

Procrustes ([1], [2]) 然後將最優變換應用於第二個矩陣(包括縮放/膨脹、旋轉和反射)以最小化 或兩個輸入之間的點差平方和數據集。

此函數並非旨在處理具有不同數量數據點(行)的數據集。如果兩個數據集具有不同的維度(不同的列數),隻需將零列添加到兩者中較小的列。

參數

data1 array_like

矩陣,n 行表示 k(列)空間中的點 data1 是參考數據,標準化後,來自 data2 的數據將被轉換以適合 data1 中的模式(必須具有>1個唯一點)。

data2 array_like

k空間中要擬合的n行數據數據1.必須是相同的形狀(numrows, numcols)作為 data1(必須有 >1 個唯一點)。

返回

mtx1 array_like

data1 的標準化版本。

mtx2 array_like

的方向數據2最適合的數據1.居中,但不一定\(tr(AA^{T}) = 1\) .

disparity 浮點數

如上定義。

拋出

ValueError

如果輸入數組不是二維的。如果輸入數組的形狀不同。如果輸入數組有零列或零行。

注意

  • 視差不應該取決於輸入矩陣的順序,但輸出矩陣會,因為隻有第一個輸出矩陣保證被縮放為

  • 重複數據點通常是可以的,重複數據點會增加其對 procrustes 擬合的影響。

  • 視差縮放為每個輸入矩陣的點數。

參考

[1]

Krzanowski, W. J. (2000)。 “多元分析原理”。

[2]

高爾,J. C. (1975)。 “Generalized procrustes analysis”。

例子

>>> import numpy as np
>>> from scipy.spatial import procrustes

矩陣ba 的旋轉、移位、縮放和鏡像版本:

>>> a = np.array([[1, 3], [1, 2], [1, 1], [2, 1]], 'd')
>>> b = np.array([[4, -2], [4, -4], [4, -6], [2, -6]], 'd')
>>> mtx1, mtx2, disparity = procrustes(a, b)
>>> round(disparity)
0.0

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.spatial.procrustes。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。