【问题标题】:How i can run GridSearchCV in dast_ml despite this error?尽管有这个错误,我如何在 dast_ml 中运行 GridSearchCV?
【发布时间】:2021-12-15 18:57:02
【问题描述】:

这是我在 Google Colab 中的代码:

import cupy as cp
import numpy as np
import joblib
import dask_ml.model_selection as dcv

def ParamSelection(X, Y, nfolds):
    param_grid = {'C': [0.001, 0.01, 0.1, 1, 10, 100],'kernel':['linear'], 'gamma':[0.001, 0.01, 0.1, 1, 10, 100]}
    svc = svm.SVC()
    grid_search = dcv.GridSearchCV(svc, param_grid, cv = nfolds)
    grid_search.fit(X, Y)
    print(grid_search.best_params_)
    print(grid_search.best_estimator_)
    print(grid_search.best_score_)
    return grid_search.best_estimator_

svc = ParamSelection(X_train.astype(cp.int_), y_train.astype(cp.int_), 10) 

我有这个错误

TypeError                                 Traceback (most recent call last)
<ipython-input-163-56196d6a31bd> in <module>()
     15     return grid_search.best_estimator_
     16 
---> 17 svc = ParamSelection(X_train.astype(cp.int_), y_train.astype(cp.int_), 10)
     18 

9 frames
/usr/local/lib/python3.7/site-packages/cudf/core/frame.py in __array__(self, dtype)
   1677     def __array__(self, dtype=None):
   1678         raise TypeError(
-> 1679             "Implicit conversion to a host NumPy array via __array__ is not "
   1680             "allowed, To explicitly construct a GPU array, consider using "
   1681             "cupy.asarray(...)\nTo explicitly construct a "

TypeError: Implicit conversion to a host NumPy array via __array__ is not allowed, To explicitly construct a GPU array, consider using cupy.asarray(...)
To explicitly construct a host array, consider using .to_array()

对于 train_test_split,我使用以下函数: 从 dask_ml.model_selection 导入 train_test_split 我真的不知道,问题出在哪里。

有什么建议吗?

【问题讨论】:

    标签: gridsearchcv rapids dask-ml


    【解决方案1】:

    在内部的某个地方,Dask ML可能会在Cupy阵列上调用np.asarray。这种隐式导致 CPU 到 GPU 传输的方法一般是不允许的,所以会抛出错误。

    如果您使用基于CPU的数据与CUML估计器,则应按预期工作。

    import cupy as cp
    import dask_ml.model_selection as dcv
    from sklearn.datasets import make_classification
    from cuml import svm
    ​
    X, y = make_classification(
        n_samples=100
    )
    ​
    def ParamSelection(X, Y, nfolds):
        param_grid = {'C': [0.001, 10, 100],'gamma':[0.001, 100]}
        svc = svm.SVC()
        grid_search = dcv.GridSearchCV(svc, param_grid, cv = nfolds)
        grid_search.fit(X, Y)
        print(grid_search.best_params_)
        print(grid_search.best_estimator_)
        print(grid_search.best_score_)
        return grid_search.best_estimator_
    ​
    svc = ParamSelection(X, y, 2) 
    {'C': 10, 'gamma': 0.001}
    SVC()
    0.8399999737739563
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-18
      • 1970-01-01
      • 1970-01-01
      • 2021-06-23
      • 2020-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多