2015-05-26 3 views
0

Я унаследовал некоторый код от коллеги, который покинул мою компанию, и я заметил, что почтовый открытый предиктор, который он написал, не запускался через несколько недель. Итак, я попытался запустить его. Дошло до этой линии:sklearn.externals.joblib не загружает файл pkl

clf_predict = joblib.load(os.path.join(data_dir,'trained_random_forest.pkl'))

И результат был таков:

File "/usr/local/lib/python2.7/distpackages/sklearn/externals/joblib/numpy_pickle.py", line 425, in load 
obj = unpickler.load() 
File "/usr/lib/python2.7/pickle.py", line 858, in load dispatch[key](self) 
File "/usr/lib/python2.7/pickle.py", line 1133, in load_reduce 
value = func(*args) 
File "sklearn/tree/_tree.pyx", line 923, in sklearn.tree._tree.Splitter.__cinit__ (sklearn/tree/_tree.c:8329) 
TypeError: __cinit__() takes exactly 5 positional arguments (4 given) 

Синтаксис для загрузки выглядит правильно для меня от того, что я видел в документации. Поэтому моя первоначальная теория заключается в том, что, возможно, scikit-learn был обновлен и не может прочитать текущий файл pickle (который на данный момент составляет несколько месяцев). Тем не менее, я не знаю точно, что он был обновлен, и я довольно новичок в работе с sklearn, поэтому я не знаю, создаст ли это проблему. Цените любые указатели, которые вы можете дать

ответ

0

Предполагая, что это сработало для вашего коллеги, и ваша проблема связана с обновлением sklearn. Дополнительный аргумент для инициализации Splitter был введен в this commit. Вы можете попробовать загрузить файл pkl в более ранней версии sklearn и взять его оттуда.

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