2015-04-15 15 views
6

Tôi đang sử dụng mã hiện được cung cấp tại http://www.quuxlabs.com/blogVí dụ về hệ số ma trận sklearn

Nó mang lại kết quả tốt. Và tôi có thể thấy rõ những thay đổi trong ma trận đã xảy ra.

Ngoài ra tôi đã cố gắng sử dụng thư viện sklearn tại sklearn.decomposition.NMF Nhưng kết quả tôi nhận được với cùng một đầu vào không đủ tốt. Có lẽ tôi đang thiếu một cái gì đó.

Đây là mẫu mã của tôi -

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 

Nó không phải là việc duy trì thoát/giá trị điền vào ma trận như tôi có thể nhìn thấy bằng cách sử dụng mã nhất định trong blog.

Ai đó có thể giúp tôi hiểu!

Trả lời

14

Hmmm ... rất câm của tôi !!! Tôi trải qua nmf.py và phát hiện ra rằng fit_tranform trả về chỉ W và nmf.component_ nhận được giá trị của sản phẩm H. Dot những mang lại cho mới 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

bạn không phải là câm. Tài liệu không tốt nếu chúng ta phải đọc nguồn. (bên cạnh đó chúng ta nên luôn luôn đọc mã và hiểu nó hoạt động như thế nào hơn là xử lý nó như một hộp đen) –

+1

Điều này có vẻ là một câu trả lời cũ. Bạn có nhận thấy rằng kết quả của http://www.quuxlabs.com/blog và mã sklearn khác với 0 giá trị không? – futurenext110