Ваш лучший выбор - настроить параметры.
n_jobs=4
Это позволяет компьютеру одновременно вычислить четыре цикла поезда. Различные задания Python запускаются в отдельных процессах, поэтому полный набор данных также копируется. Попытайтесь уменьшить n_jobs
до 2 или 1, чтобы сэкономить память. n_jobs==4
использует в четыре раза память n_jobs==1
.
cv=20
Это разделяет данные на 20 штук, а код выполняет 20 итерационных испытаний на поезд. Это означает, что данные обучения составляют 19 единиц исходных данных. Вы можете с уверенностью уменьшить его до 10, однако оценка точности может ухудшиться. Он не будет экономить много памяти, но ускоряет работу.
n_estimators = 100
Уменьшение это позволит сэкономить немного памяти, но это сделает алгоритм работать быстрее, как случайный лес будет содержать меньше деревьев.
Подводя итог, я бы рекомендовал уменьшить n_jobs
до 2, чтобы сохранить память (в 2 раза увеличить время выполнения). Чтобы компенсировать время выполнения, я предлагаю изменить cv
на 10 (2-кратная экономия во время выполнения). Если это не помогло, измените значение n_jobs
на 1, а также уменьшите количество оценок до 50 (в два раза быстрее обработки).
Какая версия scikit-learn вы используете? Версия 0.15 значительно улучшает потребление памяти в лесах. –
'0,15,2'. Я попытался переключиться на GBRT, который построен последовательно, так или иначе у него заканчивается память. Означает ли это, что мне действительно нужно попробовать запустить кластер EC2 или сделать выборочную выборку? – ananuc
@AndreasMueller: спасибо за полезный разговор о Advanced Sklearn. Может быть, я смогу попробовать некоторые идеи оттуда. У меня не было возможности пройти параллельное учебное пособие Ogrisel по EC2 по EC2. Интересно, в какой момент нам нужно рассмотреть возможность вращения кластеров EC2? – ananuc