Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Scikits-Learn RandomForrest trained on 64bit python wont open on 32bit python

I train a RandomForestRegressor model on 64bit python. I pickle the object. When trying to unpickle the object on 32bit python I get the following error:

'ValueError: Buffer dtype mismatch, expected 'SIZE_t' but got 'long long''

I really have no idea how to fix this, so any help would be hugely appreciated.

Edit: more detail

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "c:\python27\lib\pickle.py", line 1378, in load
    return Unpickler(file).load()
  File "c:\python27\lib\pickle.py", line 858, in load
    dispatch[key](self)
  File "c:\python27\lib\pickle.py", line 1133, in load_reduce
    value = func(*args)
  File "_tree.pyx", line 1282, in sklearn.tree._tree.Tree.__cinit__ (sklearn\tre
e\_tree.c:10389)
like image 550
Will Beauchamp Avatar asked Jan 09 '14 23:01

Will Beauchamp


2 Answers

This occurs because the random forest code uses different types for indices on 32-bit and 64-bit machines. This can, unfortunately, only be fixed by overhauling the random forests code. Since several scikit-learn devs are working on that anyway, I put it on the todo list.

For now, the training and testing machines need to have the same pointer size.

like image 116
Fred Foo Avatar answered Nov 12 '22 00:11

Fred Foo


For ease, please use python 64 bit version to decentralize your model. I faced the same issue recently. after taking that step it was resolved.

So try running it on a 64 bit version. I hope this helps

like image 25
Abdullateef Ogundipe Avatar answered Nov 12 '22 00:11

Abdullateef Ogundipe