2015-04-15 20 views
6

Şu anda bu iyi bir sonuç verir http://www.quuxlabs.com/blogsklearn matris ayrıştırma örneği

verilen bir kod kullanıyorum. Ve matristeki hangi değişikliklerin gerçekleştiğini açıkça görebiliyorum.

Ayrıca sklearn kütüphanesini sklearn.decomposition.NMF numaralı telefondan kullanmayı denedim. Ama aynı girişe sahip olduğum sonuçlar yeterince iyi değil. Belki bir şey özlüyorum. Ben blogda verilen kodu kullanarak gördüğünüz gibi matris içinde/doldurulmuş değerleri çıkan muhafaza edilmez

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 

-

İşte benim örnek kod verilmiştir.

Birisi anlamama yardımcı olabilir!

cevap

14

Hmmm ... çok aptalım! Ben nmf.py geçirdi ve fit_tranform sadece W döner ve o salak olmayan yeni 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 
+0

verir H. Nokta ürünün değerini almak nmf.component_ öğrendim. Kaynak okumak zorunda kalırsak, belgeler iyi değildir. (Ayrıca, her zaman kodu okumalı ve bir kara kutu gibi işlemek yerine nasıl çalıştığını anlamalıyız) –

+1

Bu eski bir Cevap gibi görünüyor. Http://www.quuxlabs.com/blog ve sklearn kodunun sonuçlarının 0 değeri için farklı olduğunu fark ettiniz mi? – futurenext110