線性代數
線性代數工具。
標準化
稀疏 + 低階
- 類別 sknetwork.linalg.SparseLR(*args, **kwargs)[原始碼]
針對「稀疏 + 低階」結構的矩陣之類別。範例
\(A + xy^T\)
- 參數:
sparse_mat (scipy.spmatrix) – 稀疏組成元件。會自動轉換為 csr 格式。
low_rank_tuples (list) – 單一陣列元組的清單元組,代表低階組成元件 [(x1, y1), (x2, y2),…]. 每一種低階組成元件的格式為 \(xy^T\)。
範例
>>> from scipy import sparse >>> from sknetwork.linalg import SparseLR >>> adjacency = sparse.eye(2, format='csr') >>> slr = SparseLR(adjacency, (np.ones(2), np.ones(2))) >>> x = np.ones(2) >>> slr.dot(x) array([3., 3.]) >>> slr.sum(axis=0) array([3., 3.]) >>> slr.sum(axis=1) array([3., 3.]) >>> slr.sum() 6.0
參考資料
De Lara (2019). 針對基於矩陣分解的圖形演算法的稀疏 + 低階技巧。 第 15 屆圖形挖掘與學習研討會 (MLG)。
- 特性 H
Hermitian 伴隨。
傳回 self 的 Hermitian 伴隨,也就是 Hermitian 共軛或 Hermitian 轉置。對於一個複雜的矩陣,Hermitian 伴隨等於共軛轉置。
可以使用 self.H 來縮寫,而不是 self.adjoint()。
- 傳回:
A_H – self 的 Hermitian 伴隨。
- 傳回類型:
LinearOperator
- 特性 T
轉置這個線性算子。
傳回一個代表此線性算子轉置的 LinearOperator。可以縮寫為 self.T 而不是 self.transpose()。
- adjoint()
Hermitian 伴隨。
傳回 self 的 Hermitian 伴隨,也就是 Hermitian 共軛或 Hermitian 轉置。對於一個複雜的矩陣,Hermitian 伴隨等於共軛轉置。
可以使用 self.H 來縮寫,而不是 self.adjoint()。
- 傳回:
A_H – self 的 Hermitian 伴隨。
- 傳回類型:
LinearOperator
- dot(x)
矩陣矩陣或矩陣向量乘法。
- 參數:
x (array_like) – 1 维或 2 维陣列,表示向量或矩陣。
- 傳回:
Ax – 1 维或 2 维陣列(視 x 的形狀而定),表示套用這個線性算子到 x 的結果。
- 傳回類型:
陣列
- matmat(X)
矩陣矩陣乘法。
執行 y=A*X 這個運算,其中 A 是 MxN 線性算子,而 X 是濃密 N*K 矩陣或 ndarray。
- 參數:
X ({matrix, ndarray}) – 形狀為 (N,K) 的陣列。
- 傳回:
Y – 形狀為 (M,K) 的矩陣或 ndarray,視 X 參數的類型而定。
- 傳回類型:
{matrix, ndarray}
註解
這個 matmat 包住任何使用者指定的 matmat 常式或覆寫後的 _matmat 方法,以確保 y 具有正確的類型。
- matvec(x)
矩陣向量乘法。
執行 y=A*x 這個運算,其中 A 是 MxN 線性算子,而 x 是欄向量或 1 维陣列。
- 參數:
x ({matrix, ndarray}) – 形狀為 (N,) 或 (N,1) 的陣列。
- 傳回:
y – 形狀為 (M,) 或 (M,1) 的矩陣或 ndarray,視 x 參數的類型和形狀而定。
- 傳回類型:
{matrix, ndarray}
註解
此 matvec 包裝了用戶指定的 matvec 常式或覆寫的 _matvec 方法,以確保 y 具有正確的形狀和類型。
- rmatmat(X)
共軛矩陣-矩陣乘法。
執行運算 y = A^H * x,其中 A 是 MxN 線性算子且 x 是列向量或一維陣列,或二維陣列。預設實作遞延到共軛。
- 參數:
X ({matrix, ndarray}) – 一個矩陣或二維陣列。
- 傳回:
Y – 一個矩陣或二維陣列,取決於輸入的類型。
- 傳回類型:
{matrix, ndarray}
註解
此 rmatmat 包裝了用戶指定的 rmatmat 常式。
- rmatvec(x)
共軛矩陣-向量乘法。
執行運算 y = A^H * x,其中 A 是 MxN 線性算子且 x 是列向量或一維陣列。
- 參數:
x ({matrix, ndarray}) – 形狀為 (M,) 或 (M,1) 的陣列。
- 傳回:
y – 形狀為 (N,) 或 (N,1) 的矩陣或 ndarray,具體取決於 x 參數的類型和形狀。
- 傳回類型:
{matrix, ndarray}
註解
此 rmatvec 包裝了用戶指定的 rmatvec 常式或覆寫的 _rmatvec 方法,以確保 y 具有正確的形狀和類型。
- transpose()
轉置這個線性算子。
傳回一個代表此線性算子轉置的 LinearOperator。可以縮寫為 self.T 而不是 self.transpose()。
求解器
- 類別 sknetwork.linalg.LanczosEig(which='LM', n_iter: int | None = None, tol: float = 0.0)[原始碼]
使用 Lanczos 方法的 Eigenvalue 求解器。
- 參數:
which (字串) –
要尋找的 Eigenvector 和 Eigenvalue
'LM'
: 最大(模數)Eigenvalue。'SM'
: 最小(模數)Eigenvalue。'LA'
: 最大(代數)Eigenvalue。'SA'
: 最小(代數)Eigenvalue。
n_iter (int) – 允許的 Arnoldi 更新反覆運算的最大次數。預設 = 10 * 列數。
tol (float) – Eigenvalue 的相對準確度(停止標準)。預設 = 0(機器精度)。
- 變數:
eigenvectors (np.ndarray) – 二維陣列,每一欄是輸入的 Eigenvector。
eigenvalues (np.ndarray) – 與每個 Eigenvector 關聯的 Eigenvalue。
請參閱
scipy.sparse.linalg.eigsh
- fit(matrix: csr_matrix | LinearOperator, n_components: int = 2)[原始碼]
對稱輸入矩陣執行頻譜分解。
- 參數:
matrix (sparse.csr_matrix 或 線性算子) – 要分解的矩陣。
n_components (int) - 計算的特徵向量數量
- 傳回:
self
- 傳回類型:
EigSolver
- get_params()
取得字典中的參數。
- 傳回:
params - 演算法的參數。
- 傳回類型:
dict
- set_params(params: dict) Algorithm
設定演算法的參數。
- 參數:
params (dict) - 演算法的參數。
- 傳回:
self
- 傳回類型:
Algorithm
- class sknetwork.linalg.LanczosSVD(n_iter: int | None = None, tol: float = 0.0)[source]
SVD 求解器,使用 \(AA^T\) 或 \(A^TA\) 上的 Lanczos 方法。
- 參數:
n_iter (int) - 允許的最大 Arnoldi 更新疊代次數。預設為 10 乘以列或行的數量。
tol (float) – Eigenvalue 的相對準確度(停止標準)。預設 = 0(機器精度)。
- 變數:
singular_vectors_left (np.ndarray) - 二維陣列,每一欄都是輸入的左奇異向量。
singular_vectors_right (np.ndarray) - 二維陣列,每一欄都是輸入的右奇異向量。
singular_values (np.ndarray) - 奇異值。
請參閱
scipy.sparse.linalg.svds
- fit(matrix: csr_matrix | LinearOperator, n_components: int, init_vector: ndarray | None = None)[source]
對輸入矩陣執行奇異值分解。
- 參數:
matrix – 要分解的矩陣。
n_components (int) – 要運算的奇異值的個數
init_vector (np.ndarray) – 迭代的起始向量。預設值 = 隨機。
- 傳回:
self
- 傳回類型:
SVDSolver
- get_params()
取得字典中的參數。
- 傳回:
params - 演算法的參數。
- 傳回類型:
dict
- set_params(params: dict) Algorithm
設定演算法的參數。
- 參數:
params (dict) - 演算法的參數。
- 傳回:
self
- 傳回類型:
Algorithm