2013-10-02 2 views
0
> c<-naiveBayes(f1,traindata) 

здесь f1 используется для добавления весов.как предсказать traindata, используя naivebayes, когда данные большие

> pred<-predict(c,traindata) 
Error: cannot allocate vector of size 98.7 Mb 
+0

Насколько велика устанавливается обучение? И сколько у вас памяти на вашей машине? Вы пробовали сбор мусора (вызывая 'gc()') прямо перед «предсказывать»? – mrip

+0

@mrip данные обучения 3900 Я использую 32-разрядный OS 2gb RAM. Я не знаю, как использовать gc(), можете ли вы помочь мне с кодом – user2829263

+0

Введите 'gc()' в терминал и покажите, какой результат вы получите. Затем попробуйте запустить 'pred <-predict (c, traindata)' после этого и посмотреть, что произойдет. – mrip

ответ

1

В общем, вот несколько вещей, чтобы попробовать, если у вас возникли проблемы с памятью в R:

1) Мусор собирают. Запуск gc() запустит сборщик мусора, и он будет также сказать вам, сколько памяти вы используете на данный момент реализована:

> a<-double(1e6) 
> b<-double(1e9) 
> gc() 
      used (Mb) gc trigger (Mb) max used (Mb) 
Ncells  182079 9.8  407500 21.8  350000 18.7 
Vcells 1001277242 7639.2 1104245379 8424.8 1001438032 7640.4 

2) Избавьтесь от больших объектов. Вы можете получить список 10 крупнейших объектов по размеру в мегабайта, используя эту команду:

> sort(sapply(ls(),function(x) object.size(get(x))),T)[1:10]/1e6 
     b   a  <NA>  <NA>  <NA>  <NA>  <NA> 
8000.00004 8.00004   NA   NA   NA   NA   NA 
     <NA>  <NA>  <NA> 
     NA   NA   NA 

В этом случае, я просто есть два объекта, так как это свежий R сессии. Но это позволяет мне определить виновника и избавиться от него, если я не нужен больше, используя rm:

> rm(b) 
> gc() 
      used (Mb) gc trigger (Mb) max used (Mb) 
Ncells 183576 9.9  407500 21.8  350000 18.7 
Vcells 1280024 9.8 883396303 6739.8 1001773436 7643.0 

3) Если после очистки из крупных объектов и мусора сбор, вы по-прежнему есть проблемы с памятью, то вам может понадобиться изучить пакет R, который позволяет обрабатывать большие массивы данных, используя файлы с отображением памяти. Некоторые параметры: mmap и bigmemory.

http://cran.r-project.org/web/packages/mmap/index.html

http://cran.r-project.org/web/packages/bigmemory/index.html

+0

как вы взяли a и b, что мне следует взять в моем случае, можете ли вы предложить мне или я должен использовать этот два объекта только a и b – user2829263

+0

> a <-double (1e6) > > b <-double (1e9) Ошибка в два раза (1e + 09): не может выделить вектор длины 1000000000 > > б <-двуспальная (1E8) Ошибка: не может выделить вектор размером 762,9 Мб > > б <-двуспальная (1e7) > > sort (sapply (ls(), function (x) object.size (get (x))), T) [1:10]/1e6 traindata b testdata ac весовой индекс f1 103.944888 80.000024 44.831592 8.000024 0.083684 0.044352 0.022312 0.021792 tindex class_col 0.015624 0.000032 Это то, что показывает, что я делаю здесь, пожалуйста, помогите – user2829263

+0

Вы не должны фактически запускать этот код, это просто пример, чтобы проиллюстрировать, как найти и избавиться от больших объектов, которые вы могли выделить и забыли около. – mrip

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