sklearn: полу-контролируемое обучение — ошибка памяти LabelSpreadingModel

#python-2.7 #machine-learning #scikit-learn

#python-2.7 #машинное обучение #scikit-learn

Вопрос:

Я использую 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: 
  

Похоже, что-то не так с лапласианом моей входной матрицы. Есть ли какой-либо параметр, который я могу настроить, или какие-либо изменения, которые я могу избежать этой ошибки? Спасибо!

Ответ №1:

Это очевидно: на вашем КОМПЬЮТЕРЕ не хватает памяти.

Поскольку вы не устанавливаете никаких параметров, по умолчанию используется rbf-ядро (доказательство).

Некоторые выдержки из документов 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.
  

Но я не знаю ваших данных, конфигурации ПК и ко. и могу только догадываться…