Busca em Grade
Parte da seção Aprendizado supervisionado do Journey de Machine Learning da Coddy. Lição 39 de 58.
Ajustar manualmente significa aninhar loops. O GridSearchCV valida cruzadamente cada combinação de configurações e mantém a melhor. Para 300 viagens de bonde, atrasado ou no horário:
Um dicionário associa cada configuração aos valores a testar. min_samples_leaf é o menor número de linhas que uma folha pode conter:
from sklearn.model_selection import GridSearchCV
grid = {"max_depth": [2, 4, 6], "min_samples_leaf": [1, 5, 20]}
search = GridSearchCV(DecisionTreeClassifier(random_state=0), grid, cv=5)
search.fit(X_train, y_train)
print(search.best_params_)
print(f"{search.best_score_:.3f}")
print(f"{search.score(X_test, y_test):.3f}")Isso imprime:
{'max_depth': 4, 'min_samples_leaf': 5}
0.876
0.813A busca ajusta novamente o vencedor com todas as linhas de treinamento, então search.score o testa uma vez. Mantenha as grades pequenas: cada célula custa 5 ajustes.
Desafio
MédioUma equipe de satélites classifica pixels como nuvem ou céu limpo usando k-NN. O programa lê o maior k a testar; o código inicial divide os dados.
- Faça uma busca em grade para cada k ímpar de 1 até esse número, com
weights"uniform"ou"distance"(vizinhos mais próximos contam mais),cv=5. - Imprima as melhores configurações, sua acurácia validada cruzadamente e a acurácia de teste, com 3 casas decimais.
Para outros pixels e 7:
Best k: 7, weights: distance
Cross-validated accuracy: 0.885
Test accuracy: 0.800Experimente você mesmo
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.neighbors import KNeighborsClassifier
max_k = int(input())
# Não altere as linhas abaixo: 360 pixels de satélite, 4 leituras de luz para cada um; o rótulo 1 significa nuvem
X, y = make_classification(n_samples=360, n_features=4, n_informative=3, n_redundant=0,
flip_y=0.08, class_sep=0.7, random_state=1)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
# Escreva seu código abaixo
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Aprendizado supervisionado
1Seu primeiro modelo
Aprendendo com exemplosConjuntos de treino e testeAjustar e preverAvaliar um modeloRecapitulação: classificador de sementes4Regressão logística
Previsões de sim ou nãoO limiar de decisãoPesos como evidênciasVárias classesRevisão: filtro de spam2Vizinhos Mais Próximos
Como o k-NN DecideEscolhendo kLimites de DecisãoEscalonamento para VizinhosRevisão: Vizinhos do Vinho5Avaliando Classificadores
A Matriz de ConfusãoPrecisão e RevocaçãoA Pontuação F1Classes DesbalanceadasCurvas ROCRecapitulação: Teste de Triagem8Validação Cruzada
Validação K-FoldComparando Modelos de Forma JustaBusca em GradeRevisão: Consertos de Skate11Projeto: Espécies de Pinguins
Conheça os PinguinsPrepare os DadosEscolha um ModeloAjuste o VencedorColoque o Modelo em Produção3Regressão Linear
Prevendo númerosVárias característicasMedindo errosGráficos de resíduosRevisão: aluguel de bicicletas6Árvores de Decisão
Árvores fazem perguntasLendo uma árvoreProfundidade da árvoreImportância das característicasRevisão: decisões de empréstimoPratique por conta própria: Compilador de Python online