2014-01-06 2 views
0

Мне было интересно, можно ли использовать генератор питона в качестве ввода данных для функций scitit-learn classifier .fit()? Из-за огромного количества данных это, кажется, имеет смысл для меня.Использование генераторов python в scikit-learn

В частности, я собираюсь внедрить случайный подход к лесу.

С уважением K

+0

Почему бы вам не попробовать это сами? Это не похоже на то, что вы не можете понять самостоятельно. –

+0

@InbarRose, похоже, для меня не так просто. Классический случайный лес не является онлайн-классификатором, поэтому легкий ответ «вы не можете». Есть некоторые подходы к решению этого, но сложные, и я сомневаюсь, что они реализованы в sklearn. – alko

+0

что непонятно по этому вопросу? – alko

ответ

6

Ответ "нет". Чтобы выполнить основное обучение со случайными лесами, вы должны

  1. Разделите свои данные на партии разумного размера (ограниченные объемом оперативной памяти, чем больше, тем лучше);
  2. поезд отдельных случайных лесов;
  3. добавить все основные деревья вместе в estimators_ члена одного из деревьев (непроверенных):

    for i in xrange(1, len(forests)): 
        forests[0].estimators_.extend(forests[i].estimators_)` 
    

(Да, это Hacky, но никакого решения этой проблемы не найдено пока Обратите внимание, что с очень большими наборами данных может потребоваться просто образец примеров обучения, которые помещаются в ОЗУ большой машины, а не для обучения на всем этом. Другой вариант - переключиться на линейные модели с SGD, которые реализуют partial_fit но, очевидно, они ограничены в виде функций, которые они могут изучить.)

1

Короткий ответ: «Нет, вы не можете». Классический классификатор случайных лесов не является инкрементным или онлайн-классификатором, поэтому вы не можете отбрасывать данные обучения во время обучения и должны предоставлять все данные сразу.

Из-за популярности RF в машинном обучении (не в последнюю очередь из-за хороших результатов прогноза для некоторых интересных случаев), есть некоторые попытки реализовать онлайн-вариацию Random Forest, но, насколько мне известно, они еще не реализованы ни в одном пакет python ML.

См. Amir Saffari's page для такого подхода (не Python).