2013-11-27 4 views
9

пытается запустить классификатор RF в наборе данных ~ 50 000 записей с 20 или около того ярлыков, которые, как я думал, должны быть хорошими, но при попытке подгонки я следую следующим образом:Ошибка сегментации случайного лесного классификатора

Exception MemoryError: MemoryError() in 'sklearn.tree._tree.Tree._resize' ignored 
Segmentation fault (core dumped) 

Набор данных передан через TfidfVectorizer, а затем TruncatedSVD с n = 100 для уменьшения размерности. RandomForestClassifier работает с n_jobs = 1 и n_estimators = 10, пытаясь найти минимальную точку, в которой он будет работать. Система работает с 4 ГБ оперативной памяти, и РФ ранее работал в аналогичном наборе данных с гораздо большим количеством оценок и т. Д. Scikit-learn работает в текущей версии 0.14.1.

Любые советы?

Thanks

+2

попробуйте запустить его на меньшее количество данных или более низкое значение n. Посмотрите, появляется ли такая же ошибка. У меня также есть 4 ГБ ОЗУ, и я использовал случайные леса на некоторых довольно больших наборах данных (не такой большой) и никогда не получал эту ошибку. Скажите, пожалуйста, если вы все равно получите ту же ошибку при ее снижении. –

+5

Вы должны сообщить об этом на [sckikit bug tracker] (https://github.com/scikit-learn/scikit-learn/issues), если он воспроизводится. –

+0

Я бы попытался уменьшить размер набора данных, предложенный @RyanSaxe. Я запустил RF на наборах данных намного больше, чем это, но имел доступ к очень большому количеству ОЗУ. –

ответ

1

Segfaults - это всегда ошибки. Если malloc выходит из строя внутри RandomForest, тогда его следует поймать, и я думаю, что это то, что происходит с вами. Как уже сказал комментатор, вы должны сообщить об этом в отслеживание ошибок RandomForest. Но malloc, вероятно, не работает из-за отсутствия памяти, поэтому уменьшите размерность, уменьшите размер набора данных тренировки, получите больше памяти или запустите систему с большим объемом памяти.

+0

http://stackoverflow.com/questions/4220965/segmentation-fault-due-to-lack-of-memory-in-c – denson

0

Попробуйте использовать библиотеку «psutil» (ссылка: https://pypi.python.org/pypi/psutil/0.5.0). Благодаря этой библиотеке, вы можете monitorize объем доступной памяти вашей системы с помощью следующей функции:

psutil.phymem_usage() 

Это поможет вам обнаружить, если ваша система не имеет достаточно памяти или, если это проблема вашей код.

Смежные вопросы