#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.
Но я не знаю ваших данных, конфигурации ПК и ко. и могу только догадываться…