首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError中的``scikit Optimize`包

TypeError中的``scikit Optimize`包
EN

Stack Overflow用户
提问于 2020-08-11 15:53:39
回答 4查看 714关注 0票数 3

当我使用scikit-optimize 0.7.4版来优化scikit-learn 0.23模型时:

代码语言:javascript
复制
    rf = BayesSearchCV(
        RandomForestClassifier(
            min_samples_leaf=0.01, oob_score=True
        ), {
            'n_estimators': Integer(30, 200),
            'max_depth': Integer(10, 150),
            'min_samples_split': Real(0.05, 0.3),
        }, n_iter=32
    )

当我运行rf.fit时,它会说,

代码语言:javascript
复制
  File "C:\Users\cloudy\PyCharmProjects\clixove\venv\lib\site-packages\skopt\space\space.py", line 764, in rvs
    if sp_version < (0, 16):
TypeError: '<' not supported between instances of 'Version' and 'tuple'

但是,当我简单地使用RandomForestClassifier并对其进行拟合时,错误不会发生。那么,如何避免这个问题呢?谢谢!

完整的回溯如下。

代码语言:javascript
复制
Traceback (most recent call last):
  File "C:/Users/cloudy/PyCharmProjects/clixove/BasicML/classifier.py", line 106, in <module>
    rf.fit(clf.data['X_train'], clf.data['Y_train'])
  File "C:\Users\cloudy\PyCharmProjects\clixove\venv\lib\site-packages\skopt\searchcv.py", line 678, in fit
    optim_result = self._step(
  File "C:\Users\cloudy\PyCharmProjects\clixove\venv\lib\site-packages\skopt\searchcv.py", line 552, in _step
    params = optimizer.ask(n_points=n_points)
  File "C:\Users\cloudy\PyCharmProjects\clixove\venv\lib\site-packages\skopt\optimizer\optimizer.py", line 360, in ask
    x = opt.ask()
  File "C:\Users\cloudy\PyCharmProjects\clixove\venv\lib\site-packages\skopt\optimizer\optimizer.py", line 332, in ask
    return self._ask()
  File "C:\Users\cloudy\PyCharmProjects\clixove\venv\lib\site-packages\skopt\optimizer\optimizer.py", line 398, in _ask
    return self.space.rvs(random_state=self.rng)[0]
  File "C:\Users\cloudy\PyCharmProjects\clixove\venv\lib\site-packages\skopt\space\space.py", line 764, in rvs
    if sp_version < (0, 16):
TypeError: '<' not supported between instances of 'Version' and 'tuple'
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-09-04 17:50:35

scikit learn >= 0.23的问题已在0.8.1版中修复

以下是PIP的安装:

代码语言:javascript
复制
pip install scikit-optimize==0.8.1

参考:scikit-optimize 0.8.1

票数 3
EN

Stack Overflow用户

发布于 2020-08-15 03:38:16

如果scikit learn版本在您的问题中不重要,您可以通过pip install -U scikit-learn == 0.20.3将scikit learn版本降级到‘0.20.3

票数 1
EN

Stack Overflow用户

发布于 2020-08-15 18:31:17

我已经解决了修改skopt/space/space.py 763-768行的问题

代码语言:javascript
复制
 for dim in self.dimensions:
            
            if sp_version < (0, 16):
                columns.append(dim.rvs(n_samples=n_samples))
            else:
                columns.append(dim.rvs(n_samples=n_samples, random_state=rng))

变成

代码语言:javascript
复制
 for dim in self.dimensions:
            
            try:
                columns.append(dim.rvs(n_samples=n_samples, random_state=rng))
            except:
                columns.append(dim.rvs(n_samples=n_samples))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63353842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档