sklearn:半监督学习- LabelSpreadingModel记忆错误



我使用sklearn LabelSpreadingModel如下:

label_spreading_model = LabelSpreading()
model_s = label_spreading_model.fit(my_inputs, labels)

但是我得到了以下错误:

   MemoryErrorTraceback (most recent call last)
    <ipython-input-17-73adbf1fc908> in <module>()
         11 
         12 label_spreading_model = LabelSpreading()
    ---> 13 model_s = label_spreading_model.fit(my_inputs, labels)
    /usr/local/lib/python2.7/dist-packages/sklearn/semi_supervised/label_propagation.pyc in fit(self, X, y)
        224 
        225         # actual graph construction (implementations should override this)
    --> 226         graph_matrix = self._build_graph()
        227 
        228         # label construction
    /usr/local/lib/python2.7/dist-packages/sklearn/semi_supervised/label_propagation.pyc in _build_graph(self)
        455         affinity_matrix = self._get_kernel(self.X_)
        456         laplacian = graph_laplacian(affinity_matrix, normed=True)
    --> 457         laplacian = -laplacian
        458         if sparse.isspmatrix(laplacian):
        459             diag_mask = (laplacian.row == laplacian.col)
    MemoryError: 

看起来输入矩阵的拉普拉斯函数有问题。是否有任何参数我可以配置或任何更改,我可以避免这个错误?谢谢!

很明显,你的电脑内存不足了。

由于您没有设置任何参数,因此默认使用rbf-kernel (proof)。

摘录自scikit-learn的文档:

The RBF kernel will produce a fully connected graph which is represented in
memory by a dense matrix. This matrix may be very large and combined with the 
cost of performing a full matrix multiplication calculation for each iteration
of the algorithm can lead to prohibitively long running times

也许下面(上面文档中的下一句话)会有帮助:

On the other hand, the KNN kernel will produce a much more memory-friendly 
sparse matrix which can drastically reduce running times.

但我不知道你的数据,电脑配置和其他的,只能猜测…

相关内容

  • 没有找到相关文章

最新更新