TypeError:*之后的reraise()参数必须是可迭代的,而不是协程

时间:2019-09-12 11:32:52

标签: python-3.x xgboost dask-distributed dask-ml

在本地计算机上安装dask xgboost时出现

TypeError

我是新手。我无法适应dask-xgboost模型。

import dask_xgboost as xgb
from dask.distributed import Client, LocalCluster

client = Client() 
client

param = dict(learning_rate =0.1,
 n_estimators=500,
 max_depth=6,
 min_child_weight=7,
 gamma=0.5,
 subsample=0.7,
 colsample_bytree=0.6,
 reg_alpha=0.005,
 objective= 'binary:logistic',
 nthread=4,
 scale_pos_weight=1)

xgb.train(client, param, dask_train_array, dask_y_train_array)

当我执行上述代码时,遇到此错误。知道该怎么办吗?

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-159-28dbf7c730b8> in <module>()
----> 1 xgb.train(client, param, dask_train_array, dask_y_train_array)

C:\Anaconda\lib\site-packages\dask_xgboost\core.py in train(client, params, data, labels, dmatrix_kwargs, **kwargs)
    189     """
    190     return client.sync(_train, client, params, data,
--> 191                        labels, dmatrix_kwargs, **kwargs)
    192 
    193 

C:\Anaconda\lib\site-packages\distributed\client.py in sync(self, func, asynchronous, callback_timeout, *args, **kwargs)
    751         else:
    752             return sync(
--> 753                 self.loop, func, *args, callback_timeout=callback_timeout, **kwargs
    754             )
    755 

C:\Anaconda\lib\site-packages\distributed\utils.py in sync(loop, func, callback_timeout, *args, **kwargs)
    335             e.wait(10)
    336     if error[0]:
--> 337         six.reraise(*error[0])
    338     else:
    339         return result[0]

C:\Anaconda\lib\site-packages\six.py in reraise(tp, value, tb)
    691             if value.__traceback__ is not tb:
    692                 raise value.with_traceback(tb)
--> 693             raise value
    694         finally:
    695             value = None

C:\Anaconda\lib\site-packages\distributed\utils.py in f()
    320             if callback_timeout is not None:
    321                 future = gen.with_timeout(timedelta(seconds=callback_timeout), future)
--> 322             result[0] = yield future
    323         except Exception as exc:
    324             error[0] = sys.exc_info()

C:\Anaconda\lib\site-packages\tornado\gen.py in run(self)
   1131 
   1132                     try:
-> 1133                         value = future.result()
   1134                     except Exception:
   1135                         self.had_exception = True

C:\Anaconda\lib\site-packages\tornado\gen.py in run(self)
   1139                     if exc_info is not None:
   1140                         try:
-> 1141                             yielded = self.gen.throw(*exc_info)
   1142                         finally:
   1143                             # Break up a reference to itself

C:\Anaconda\lib\site-packages\dask_xgboost\core.py in _train(client, params, data, labels, dmatrix_kwargs, **kwargs)
    125     for part in parts:
    126         if part.status == 'error':
--> 127             yield part  # trigger error locally
    128 
    129     # Because XGBoost-python doesn't yet allow iterative training, we need to

C:\Anaconda\lib\site-packages\tornado\gen.py in run(self)
   1131 
   1132                     try:
-> 1133                         value = future.result()
   1134                     except Exception:
   1135                         self.had_exception = True

C:\Anaconda\lib\asyncio\tasks.py in _wrap_awaitable(awaitable)
    597     that will later be wrapped in a Task by ensure_future().
    598     """
--> 599     return (yield from awaitable.__await__())
    600 
    601 

C:\Anaconda\lib\site-packages\distributed\client.py in __await__(self)
    413 
    414     def __await__(self):
--> 415         return self.result().__await__()
    416 
    417 

C:\Anaconda\lib\site-packages\distributed\client.py in result(self, timeout)
    220         result = self.client.sync(self._result, callback_timeout=timeout, raiseit=False)
    221         if self.status == "error":
--> 222             six.reraise(*result)
    223         elif self.status == "cancelled":
    224             raise result

TypeError: reraise() argument after * must be an iterable, not coroutine

以前,我曾尝试使用相同的dask数组进行logistic回归,并且效果很好。我不确定是什么导致此错误。我将不胜感激

0 个答案:

没有答案