Проблемы Python ScikitLearn GridSearchCV с TFIDF - JobLibValueError?

поэтому у меня есть корпус слов, на котором я запускаю TFIDF, а затем пытаюсь классифицировать с помощью логистической регрессии и GridSearch.

Но я получаю огромную ошибку, когда запускаю GridSearch... ошибка такова (она длиннее, но я просто немного копирую и вставляю):

An unexpected error occurred while tokenizing input file /Users/yongcho822/anaconda/lib/python2.7/site-packages/sklearn/base.pyc
The following traceback may be corrupted or invalid
The error message is: ('EOF in multi-line statement', (2, 0))
An unexpected error occurred while tokenizing input file /Users/yongcho822/anaconda/lib/python2.7/site-packages/sklearn/base.pyc
The following traceback may be corrupted or invalid
The error message is: ('EOF in multi-line statement', (2, 0))


---------------------------------------------------------------------------
JoblibValueError                          Traceback (most recent call last)
<ipython-input-43-7c8b397eb30b> in <module>()
----> 1 gs_lr_tfidf.fit(X_train, y_train)

/Users/yongcho822/anaconda/lib/python2.7/site-packages/sklearn/grid_search.pyc in fit(self, X, y)
    802 
    803         """
--> 804         return self._fit(X, y, ParameterGrid(self.param_grid))
    805 
    806 

/Users/yongcho822/anaconda/lib/python2.7/site-packages/sklearn/grid_search.pyc in _fit(self, X, y, parameter_iterable)
    551                                     self.fit_params, return_parameters=True,
    552                                     error_score=self.error_score)
--> 553                 for parameters in parameter_iterable
    554                 for train, test in cv)
    555 

/Users/yongcho822/anaconda/lib/python2.7/site-packages/sklearn/externals/joblib/parallel.pyc in __call__(self, iterable)
    810                 # consumption.
    811                 self._iterating = False
--> 812             self.retrieve()
    813             # Make sure that we get a last message telling us we are done
    814             elapsed_time = time.time() - self._start_time

/Users/yongcho822/anaconda/lib/python2.7/site-packages/sklearn/externals/joblib/parallel.pyc in retrieve(self)
    760                         # a working pool as they expect.
    761                         self._initialize_pool()
--> 762                 raise exception
    763 
    764     def __call__(self, iterable):

JoblibValueError: JoblibValueError
___________________________________________________________________________
Multiprocessing exception:
...........................................................................
/Users/yongcho822/anaconda/lib/python2.7/runpy.py in _run_module_as_main(mod_name='IPython.kernel.__main__', alter_argv=1)
    157     pkg_name = mod_name.rpartition('.')[0]
    158     main_globals = sys.modules["__main__"].__dict__
    159     if alter_argv:
    160         sys.argv[0] = fname
    161     return _run_code(code, main_globals, None,
--> 162                      "__main__", fname, loader, pkg_name)
        fname = '/Users/yongcho822/anaconda/lib/python2.7/site-packages/IPython/kernel/__main__.py'
        loader = <pkgutil.ImpLoader instance>
        pkg_name = 'IPython.kernel'
    163 
    164 def run_module(mod_name, init_globals=None,
    165                run_name=None, alter_sys=False):
    166     """Execute a module's code without importing it

...........................................................................
/Users/yongcho822/anaconda/lib/python2.7/runpy.py in _run_code(code=<code object <module> at 0x1033028b0, file "/Use...ite-packages/IPython/kernel/__main__.py", line 1>, run_globals={'__builtins__': <module '__builtin__' (built-in)>, '__doc__': None, '__file__': '/Users/yongcho822/anaconda/lib/python2.7/site-packages/IPython/kernel/__main__.py', '__loader__': <pkgutil.ImpLoader instance>, '__name__': '__main__', '__package__': 'IPython.kernel', 'app': <module 'IPython.kernel.zmq.kernelapp' from '/Us.../site-packages/IPython/kernel/zmq/kernelapp.pyc'>}, init_globals=None, mod_name='__main__', mod_fname='/Users/yongcho822/anaconda/lib/python2.7/site-packages/IPython/kernel/__main__.py', mod_loader=<pkgutil.ImpLoader instance>, pkg_name='IPython.kernel')
     67         run_globals.update(init_globals)
     68     run_globals.update(__name__ = mod_name,
     69                        __file__ = mod_fname,
     70                        __loader__ = mod_loader,
     71                        __package__ = pkg_name)
---> 72     exec code in run_globals
        code = <code object <module> at 0x1033028b0, file "/Use...ite-packages/IPython/kernel/__main__.py", line 1>
        run_globals = {'__builtins__': <module '__builtin__' (built-in)>, '__doc__': None, '__file__': '/Users/yongcho822/anaconda/lib/python2.7/site-packages/IPython/kernel/__main__.py', '__loader__': <pkgutil.ImpLoader instance>, '__name__': '__main__', '__package__': 'IPython.kernel', 'app': <module 'IPython.kernel.zmq.kernelapp' from '/Us.../site-packages/IPython/kernel/zmq/kernelapp.pyc'>}
     73     return run_globals
     74 
     75 def _run_module_code(code, init_globals=None,
     76                     mod_name=None, mod_fname=None,

...........................................................................
/Users/yongcho822/anaconda/lib/python2.7/site-packages/IPython/kernel/__main__.py in <module>()
      1 
      2 
----> 3 
      4 if __name__ == '__main__':
      5     from IPython.kernel.zmq import kernelapp as app
      6     app.launch_new_instance()
      7 
      8 
      9 
     10

Что я делаю не так? Вот что я делаю:

X_train, X_test, y_train, y_test = train_test_split(train_X_tfidf_DF.values, train_Y, test_size=0.25, random_state=1)

X_train.shape, type(X_train), y_train.shape, type(y_train)
>>>((29830, 6648), numpy.ndarray, (29830,), numpy.ndarray)

X_train[:2]
>>>array([[ 0.,  0.,  0., ...,  0.,  0.,  0.],
       [ 0.,  0.,  0., ...,  0.,  0.,  0.]])

y_train[:2]
>>>array([11, 16])

param_grid = [{'clf__penalty': ['l1', 'l2'],
               'clf__C': [1.0, 10.0, 100.0]}]

gs_lr_tfidf = GridSearchCV(estimator = LogisticRegression(),
                           param_grid = param_grid,
                           scoring = 'accuracy',
                           cv = 5, verbose = 1, n_jobs = -1)

gs_lr_tfidf.fit(X_train, y_train)
(this is where the error pops up)

person SpicyClubSauce    schedule 07.11.2015    source источник
comment
Похоже, есть проблема с модулем многопроцессорности. Вы пытались установить n_jobs=1   -  person    schedule 08.11.2015
comment
@SebastianRaschka Это сработало для меня, я имею в виду, что это устранило непонятную ошибку An unexpected error occurred while tokenizing input file .../sklearn/base.pyc и выявило настоящую ошибку. В моем случае реальной проблемой был неправильный ключ параметра.   -  person Poulsbo    schedule 10.11.2015
comment
Я тоже. Как-то туда прокрался негатив: n_jobs=-1   -  person Monica Heddneck    schedule 18.01.2016
comment
n_jobs=-1 отлично подходит, он будет использовать все доступные процессоры   -  person Lior Magen    schedule 08.08.2016


Ответы (2)


Я наткнулся на аналогичную проблему. Сначала установите n_jobs в 1, затем запустите код, в результате вы получите истинное сообщение об ошибке, исправьте ошибку и вернитесь с n_jobs = -1.

person Darqer    schedule 15.10.2017

Моя проблема была в param_grid, я установил недопустимое значение, проверьте ваши значения, например, в моей простой для решения проблеме было значение 1

'max_leaf_nodes':[1]

person Alberto Perez    schedule 16.05.2018