sklearn矩阵分解示例

时间:2015-04-15 11:25:36

标签: python scikit-learn matrix-factorization

我正在使用目前在http://www.quuxlabs.com/blog

处提供的代码

它给出了很好的结果。我可以清楚地看到矩阵发生了哪些变化。

我还尝试在sklearn.decomposition.NMF使用sklearn库 但是我用相同的输入得到的结果还不够好。也许我错过了什么。

这是我的示例代码 -

from sklearn.decomposition import NMF , ProjectedGradientNMF
R = [
     [5,3,0,1],
     [4,0,0,1],
     [1,1,0,5],
     [1,0,0,4],
     [0,1,5,4],
    ]
R = numpy.array(R)
nmf = NMF(beta=0.001, eta=0.0001, init='random', max_iter=2000,nls_max_iter=20000, random_state=0, sparseness=None,tol=0.001)
nR = nmf.fit_transform(R)
print nR
print
print nmf.reconstruction_err_
print

我没有在矩阵中维护退出/填充值,我可以使用博客中给出的代码看到。

有人可以帮助我理解!

1 个答案:

答案 0 :(得分:16)

嗯......我很笨!我经历了nmf.py并发现fit_tranform仅返回W和nmf.component_获取的H值。这些产品的新产品给出了新的R.

from sklearn.decomposition import NMF , ProjectedGradientNMF
R = [
     [5,3,0,1],
     [4,0,0,1],
     [1,1,0,5],
     [1,0,0,4],
     [0,1,5,4],
    ]
R = numpy.array(R)
nmf = NMF()
W = nmf.fit_transform(R);
H = nmf.components_;
nR = numpy.dot(W,H)
print nR