目录
一、问题描述
请先阅读:python&python包&tensorflow&pytorch&keras&CUDA&CUDNN对应关系
当前版本:
scikit-learn == 0.24.2
scikit-optimize == 0.8.1
# 运行一下代码
from skopt import BayesSearchCV
from sklearn.datasets import load_digits
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
X, y = load_digits(n_class=10, return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.75, test_size=.25, random_state=0)
# log-uniform: understand as search over p = exp(x) by varying x
opt = BayesSearchCV(
SVC(),
{
'C': (1e-6, 1e+6, 'log-uniform'),
'gamma': (1e-6, 1e+1, 'log-uniform'),
'degree': (1, 8), # integer valued parameter
'kernel': ['linear', 'poly', 'rbf'], # categorical parameter
},
n_iter=32,
cv=3
)
opt.fit(X_train, y_train)
print("val. score: %s" % opt.best_score_)
print("test score: %s" % opt.score(X_test, y_test))
报错如下:
TypeError: __init__() got an unexpected keyword argument 'iid'
二、原因
scikit-optimize 0.8.1 存在参数 iid 不被scikit-learn 0.24.2 接受
三、解决
降低scikit-learn版本为0.22.2与scikit-optimize==0.8.1契合
pip install -i https://mirrors.aliyun.com/pypi/simple/ --upgrade scikit-optimize==0.8.1
pip install -i https://mirrors.aliyun.com/pypi/simple/ --upgrade scikit-learn==0.22.2