NMF稀疏矩阵分析(使用SKlearn)

时间:2016-01-17 03:28:36

标签: machine-learning scikit-learn sparse-matrix matrix-factorization matrix-decomposition

只是寻找一些简短的建议让我回到正轨。我一直在研究一个问题的解决方案,其中我有一个非常稀疏的输入矩阵(约25%的信息填充,其余为0)存储在sparse.coo_matrix中:

sparse_matrix = sparse.coo_matrix((value, (rater, blurb))).toarray()

在从我的数据集构建此数组并使用其他一些选项进行操作之后,我目前将NMF模型fitter函数定义如下:

def nmf_model(matrix): 
  model = NMF(init='nndsvd', random_state=0)

  W = model.fit_transform(matrix);
  H = model.components_;
  result = np.dot(W,H)

  return result

现在,问题是我的输出似乎没有正确地计算0值。任何0的值都会碰到某个小于1的值,而我的已知值会从实际值中波动很大(所有数据都是1到10之间的等级)。谁能发现我做错了什么?从scikit的文档中,我假设使用nndsvd初始化将有助于解释空值正确。样本输出:

#Row / Column / New Value
35 18 6.50746917334 #Actual Value is 6
35 19 0.580996641675 #Here down are all "estimates" of my function
35 20 1.26498699492
35 21 0.00194119935464
35 22 0.559623469753
35 23 0.109736902936
35 24 0.181657421405
35 25 0.0137801897011
35 26 0.251979684515
35 27 0.613055371646
35 28 6.17494590041 #Actual values is 5.5

感谢任何更有经验的ML编码员提供的任何建议!

0 个答案:

没有答案