我正在尝试实现非负矩阵分解,以便为推荐引擎项目找到缺少的矩阵值。我使用nimfa库来实现矩阵分解。但似乎无法预测丢失的值。 此矩阵中缺少的值用0表示。在
a=[[ 1. 0.45643546 0. 0.1 0.10327956 0.0225877 ]
[ 0.15214515 1. 0.04811252 0.07607258 0.23570226 0.38271325]
[ 0. 0.14433757 1. 0.07905694 0. 0.42857143]
[ 0.1 0.22821773 0.07905694 1. 0. 0.27105237]
[ 0.06885304 0.47140452 0. 0. 1. 0.13608276]
[ 0.00903508 0.4592559 0.17142857 0.10842095 0.08164966 1. ]]
import nimfa
model = nimfa.Lsnmf(a, max_iter=100000,rank =4)
#fit the model
fit = model()
#get U and V matrices from fit
U = fit.basis()
V = fit.coef()
print numpy.dot(U,V)
但是给定的ans与a几乎相同,我无法预测零值。 请告诉我使用哪种方法或任何其他可能的实现和任何可能的资源。在
我想用这个函数来最小化预测值的误差。在
错误=| | | | | | | | | | | | | | | | | | U F
式中,F表示frobenius范数
我以前没有使用过nimfa,所以我不能确切地回答如何做到这一点,但是使用sklearn,您可以执行预处理器来转换丢失的值,如下所示:
^{pr2}$
您可以阅读更多here。在
相关问题 更多 >
编程相关推荐