Curiosamente na minha solução a regressão linear é o melhor regressor. Isso não é o caso mais frequente - de forma geral a regressão linear não é uma boa alternativa.
Para fazer a busca aleatoria, considere usar o RandomizedSearchCV Neste caso voce precisa especificar a distribuição de probabilidade dos hiperametros
uniform
é a distribuição uniforme (números reais)randint
é a distribuição uniforme para números inteiros (como o numero de arvores no RF e GBM)loguniform
é a distribuição onde o expoente é uniforme (como no C e γ no SVM)Para os que casos onde voce tem que tentar todas as combinações, pense no GridSearchCV
Essas duas funçoes de busca de hiperparametro precisam que voce passe varias coisas (a validacaó cruzada, e a funçao de avaliação) e elas retornam varias coisas inclusive o melhor resultado. A funçao de scoring esta descrita em https://scikit-learn.org/stable/modules/model_evaluation.html#scoring-parameter e me parece que a que devemos usar é a neg_root_mean_squared_error
- Note que ela retorna o negativo do RMSE ja que essas funçoes buscam a solução com maior valor (por exemplo acuracia - quanto maior melhor) e para o RMSE quanto MENOR melhor. Dai o negativo.
mas vale a pena fazer pelo menos 1 ou 2 testes onde voce escreve o codigo inteiro, por explicito.
Os testes no RF, e SVM com kernel RBF demoraram varios minutos no meu caso, os outros são mais rápidos.
O MLP nao converge (no meu caso) mesmo com 400 interações (o default é 200 interações) Mesmo sem convergir o algoritmo da uma resposta que nao é maluca.