2014-01-02 6 views
0

Я пытаюсь использовать scikit-learn AdaBoostClassifier, и я пытаюсь сериализовать выходной классификатор с помощью cPickle, чтобы сохранить его в базе данных или в файле, но у меня получилась ошибка в памяти и когда я использовал маршала, он дал мне непригодный объект. Итак, мне интересно, как я могу сериализовать этот изученный классификатор.serialize adaboost classifier scikit-learn

def adboost_classify(X,Y): 
    bdt = AdaBoostClassifier(DecisionTreeClassifier(max_depth=10), 
        algorithm="SAMME.R", 
        n_estimators=3000) 
    t0 = time() 
    bdt.fit(X, Y) 
    t1 = time() 
    thebytes = cPickle.dumps(bdt) 

спасибо заранее

ответ

0

Это потому, что вы пытаетесь сохранить все представление в памяти. Попробуйте записать его в файл напрямую, вместо этого:

with open('adaboostpickled.tmp', 'w') as output: 
    cPikle.dump(bdt, output) 
+0

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

+0

@ user3155174 Я не проверил его, но не должен ли он работать ни с чем * записываемый * (т. Е. Какой-либо поток - также сетевой поток)? – BartoszKP

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