我正在尝试恢复群集跟踪中丢失的数据,如下所示:
我读了一些文章,发现我可以为这个数据集创建一个张量,然后分解张量来恢复丢失的数据。在
现在我使用的是Tensorly,python上的一个张量库,我构建了一个简单的张量,如下所示:
import tensorly as tl
X = tl.tensor(np.arange(24).reshape((4, 6)))
X[0][5]= nan
X[1][5]= nan
我得到了:
^{pr2}$然后我试着根据官方文件进行分解:
from tensorly.decomposition import parafac
factors = parafac(X, rank=1)
print(tl.kruskal_to_tensor(factors))
当参数秩为1或2或3时,我得到所有nan结果:
[[ nan nan nan nan nan nan]
[ nan nan nan nan nan nan]
[ nan nan nan nan nan nan]
[ nan nan nan nan nan nan]]
参数秩大于3时出错:
ValueError: array must not contain infs or NaNs
我该怎么解决这个问题?任何答案都会有帮助。提前谢谢。在
在tensorly(https://github.com/tensorly/tensorly/issues/4)的当前版本中似乎不支持处理缺少的值。在
有关基于numpy的解决方案,请参见https://nipunbatra.github.io/blog/2017/tensor-decomposition-autograd.html。在
Tucker和CP分解中还不支持缺失值。但是,robust tensor PCA可以,您可以使用它来恢复丢失的值,并分离低秩部分和稀疏噪声。在
相关问题 更多 >
编程相关推荐