python - 在 python 中拟合线性变换

标签 python statistics scikit-learn linear-algebra linear-regression

我有两组向量 x_i\in R^n 和 z_i\in R^m

我想找到一个变换矩阵W 使得 W x_i 近似于 z_i,

即我想找到最小化的 W:sum_i || W x_i − z_i ||^2

是否有执行此操作的 Python 函数?

最佳答案

使用 this kronecker product identity它成为一个经典的线性回归问题。但即使没有它,它也只是线性回归设置的转置。

import numpy as np
m, n = 3, 4
N = 100  # num samples

rng = np.random.RandomState(42)

W = rng.randn(m, n)
X = rng.randn(n, N)
Z_clean = W.dot(X)

Z = Z_clean + rng.randn(*Z_clean.shape) * .001

使用 ZX 我们可以通过求解 argmin_W ||X^T W^T - Z^T||^2 来估计 W

W_est = np.linalg.pinv(X.T).dot(Z.T).T

from numpy.testing import assert_array_almost_equal
assert_array_almost_equal(W, W_est, decimal=3)

关于python - 在 python 中拟合线性变换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27980159/

相关文章:

python - 为什么 random.shuffle(list(range(n))) 有效,但 random.shuffle(range(n)) 无效?

r - 手动检查 R 中的面板单位根测试

python - 为什么十六进制数字在 python 子进程中没有正确传递

python - 使用 CV 从图像中提取树数

python - 非参数检验的 p 值极低

python - 从另一个列表中删除一个列表中对应于 nan 的项目

python - 如何在 numpy 数组中使用 for 循环?

python - 如何在 Python 中为余弦相似度运行一个大矩阵?

python - 无法在桌面模式下打开 PhantomJS 网页(始终在移动模式下)

math - 线性规划优化和梯度下降优化之间有什么区别?