首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python上张量分解的缺失数据恢复

Python上张量分解的缺失数据恢复
EN

Stack Overflow用户
提问于 2018-05-09 07:02:12
回答 2查看 550关注 0票数 0

我正在尝试恢复集群跟踪中丢失的数据,如下所示:

我读了一些文章,发现我可以为这个数据集创建一个张量,然后对张量进行分解以恢复丢失的数据。

现在我用的是替身张量库,我建立了这样一个简单的张量:

代码语言:javascript
复制
import tensorly as tl
X = tl.tensor(np.arange(24).reshape((4, 6)))
X[0][5]= nan
X[1][5]= nan

我得到了:

代码语言:javascript
复制
array([[  0.,   1.,   2.,   3.,   4.,  nan],
       [  6.,   7.,   8.,   9.,  10.,  nan],
       [ 12.,  13.,  14.,  15.,  16.,  17.],
       [ 18.,  19.,  20.,  21.,  22.,  23.]])

然后我试着根据正式文件分解它:

代码语言:javascript
复制
from tensorly.decomposition import parafac
factors = parafac(X, rank=1)
print(tl.kruskal_to_tensor(factors))

当参数等级为1、2或3时,我得到了所有的结果:

代码语言:javascript
复制
[[ 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时时,会出现以下错误:

代码语言:javascript
复制
ValueError: array must not contain infs or NaNs

我怎么才能解决这个问题?任何答案都会有帮助。提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-09 07:26:39

在tensorly (https://github.com/tensorly/tensorly/issues/4 )的当前版本中,似乎不支持处理缺失的值。

有关基于numpy的解决方案,请参见https://nipunbatra.github.io/blog/2017/tensor-decomposition-autograd.html

票数 0
EN

Stack Overflow用户

发布于 2018-05-09 13:48:48

Tucker和CP分解中还不支持缺失值。但是,鲁棒张量PCA可以使用它来恢复丢失的值,并分离低级别的部分和稀疏的噪声。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50247331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档