Menu
CoddyTech

Escolha um Modelo

Parte da seção Aprendizado supervisionado do Journey de Machine Learning da Coddy. Lição 52 de 58.

Várias famílias de modelos poderiam classificar os pinguins. Qual se ajusta melhor? Dê a cada uma as mesmas pistas e as mesmas divisões, depois compare, como estes modelos para vinho:

Acurácias das cinco divisões por candidato nos dados de vinho, mostradas como pontos, com uma barra preta em cada média: regressão logística mais alta e consistente, em 0.970, k-NN em 0.940, a árvore mais baixa, em 0.896, com uma divisão caindo para 0.78

A maior média vence. Um desvio padrão pequeno indica que venceu em todos os folds, não em uma divisão sortuda.

pipe = make_pipeline(prep, model)
scores = cross_val_score(pipe, X_train, y_train, cv=5)

Cada divisão ajusta as etapas novamente usando sua própria parte de treinamento, então cada pontuação continua confiável. Os pinguins de teste permanecem reservados.

challenge icon

Desafio

Médio

Quatro candidatos querem a vaga. O código inicial contém suas etapas, as listas names e models, e lê o número de partições.

  1. Para cada candidato, faça a validação cruzada do pipeline de prep e desse modelo nas linhas de treinamento.
  2. Imprima a média e o desvio padrão, com 3 casas decimais.
  3. Imprima o vencedor: a maior média.

Para outra colônia e 5 partições:

k-NN: mean 0.951, std 0.031
Logistic regression: mean 0.964, std 0.012
Random forest: mean 0.958, std 0.027
Decision tree: mean 0.902, std 0.048
Winner: Logistic regression

Experimente você mesmo

import pandas as pd
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import make_pipeline
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.tree import DecisionTreeClassifier

# A colônia de Conheça os Pinguins, suas características e seu rótulo
penguins = pd.read_csv("penguins.csv")
numbers = ["bill_length_mm", "bill_depth_mm", "flipper_length_mm", "body_mass_g"]
text = ["island", "sex"]
X = penguins[numbers + text]
y = penguins["species"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, stratify=y, random_state=0)

# De Prepare os Dados: os dois caminhos
number_steps = make_pipeline(SimpleImputer(strategy="median"), StandardScaler())
text_steps = make_pipeline(SimpleImputer(strategy="constant", fill_value="unknown"), OneHotEncoder())
prep = ColumnTransformer([("numbers", number_steps, numbers), ("words", text_steps, text)])

# Os candidatos
names = ["k-NN", "Logistic regression", "Random forest", "Decision tree"]
models = [KNeighborsClassifier(), LogisticRegression(max_iter=1000),
          RandomForestClassifier(n_estimators=100, random_state=0), DecisionTreeClassifier(random_state=0)]
folds = int(input())

# Escreva seu código abaixo
quiz iconTeste seus conhecimentos

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

Pratique por conta própria: Compilador de Python online