基于SVD的矩阵分解填补矩阵空缺值python源代码
时间: 2023-04-11 10:01:24 浏览: 247
SVD矩阵分解
以下是基于SVD的矩阵分解填补矩阵空缺值的Python源代码:
```python
import numpy as np
from numpy.linalg import svd
# 构造一个5x5的矩阵,其中有一些空缺值
M = np.array([[1, 2, 3, np.nan, 5],
[6, 7, np.nan, 9, 10],
[11, np.nan, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, np.nan, 24, 25]])
# 对矩阵进行SVD分解
U, s, V = svd(M)
# 选择前两个奇异值,构造一个2x2的对角矩阵
S = np.diag(s[:2])
# 用分解后的矩阵重构原矩阵
M_reconstructed = U[:, :2] @ S @ V[:2, :]
# 输出重构后的矩阵
print(M_reconstructed)
```
这段代码可以用于填补矩阵中的空缺值,具体做法是先对矩阵进行SVD分解,然后选择前几个奇异值,构造一个对角矩阵,再用分解后的矩阵重构原矩阵。这样可以尽可能地保留原矩阵的信息,同时填补空缺值。
阅读全文