Olá.
Tive problemas nessa aula devido a incompatibilidades entre o scikit-optimize e o numpy em versões atuais. Estou seguindo as aulas usando um virtual environment para Python no Visual Studio, então não sei se o mesmo problema acontece ao usar o Google Colab. Mesmo assim, segue minha dica, caso alguém encontre um problema semelhante.
O scikit-optimize não é atualizado há alguns anos, então versões mais novas do numpy podem trazer problemas. No caso, eu estava usando a versão 1.26.2 do numpy e, ao rodar o cross_val_score
com o BayesSearchCV
, recebi o seguinte erro:
AttributeError: module 'numpy' has no attribute 'int'.
`np.int` was a deprecated alias for the builtin `int`. To avoid this error in existing code, use `int` by itself. Doing this will not modify any behavior and is safe. When replacing `np.int`, you may wish to use e.g. `np.int64` or `np.int32` to specify the precision. If you wish to review your current use, check the release note link for additional information.
The aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at:...
A solução era fazer o downgrade do numpy para uma versão anterior à 1.20, mas aí eu ia cair em outro problema: estou usando a versão 3.10 do Python, que não suporta versões antigas do numpy. Isso ia ser uma dor de cabeça para mim, então procurei por uma solução alternativa e encontrei nas issues abertas no GitHub do scikit-optimize.
Esses problemas de incompatilibidade com o numpy são reportados por lá, e um usuário apresentou um fix para isso, que não foi aceito até hoje (acho que o grupo do scikit-optimize não está mais atualizando o projeto...). No entanto, quando modifiquei meu código com a fix do usuário, deu certo e o cross_val_score
rodou!
Segue então o link do arquivo que precisa ser modificado diretamente na pasta do skopt (...\site-packages\skopt\space\transformers.py): https://github.com/scikit-optimize/scikit-optimize/pull/1187/files. É uma alteração bem simples em duas linhas de código. Depois de modificado, é só fazer um restart do kernel (ou abrir e fechar a IDE que você estiver usando).