Várias classes
Parte da seção Aprendizado supervisionado do Journey de Machine Learning da Coddy. Lição 19 de 58.
Limão-siciliano, limão-taiti ou laranja? A regressão logística também lida com três classes. Aqui, uma nova fruta fica entre os limões-sicilianos e as laranjas:
model = LogisticRegression(max_iter=1000)
model.fit(X, kind) # X: diâmetro, peso; kind: limão-siciliano, lima ou laranja
print(model.classes_)
print(np.round(model.predict_proba([[6.7, 144]]), 2))
print(model.predict([[6.7, 144]]))Isso imprime:
['lemon' 'lime' 'orange']
[[0.61 0. 0.39]]
['lemon']Cada linha contém uma probabilidade para cada classe, na ordem de classes_, e a soma delas é 1. predict escolhe a maior.
Então, o modelo indica o quanto tem certeza: 61% de limão é uma decisão apertada, que merece uma segunda análise.
Desafio
MédioUm aplicativo de podcasts classifica novos episódios como comédia, notícias ou true crime. O código inicial ajusta uma LogisticRegression a partir de episodes.csv (duração, participantes, risadas por minuto) e lê um novo episódio em episode, uma tabela de uma linha.
Complete describe(episode):
- Imprima a probabilidade de cada tipo de programa, na ordem de
model.classes_, como uma porcentagem inteira. - Retorne o tipo mais provável.
Para o episódio de outro aplicativo:
comedy: 12%
news: 70%
true crime: 18%
Best guess: newsExperimente você mesmo
import pandas as pd
from sklearn.linear_model import LogisticRegression
episodes = pd.read_csv("episodes.csv")
features = ["length_min", "speakers", "laughs_per_min"]
model = LogisticRegression(max_iter=1000)
model.fit(episodes[features], episodes["show_type"])
# Imprime a probabilidade de cada tipo de programa para um episódio (uma tabela de uma linha) e depois retorna o tipo mais provável
def describe(episode):
# Escreva seu código aqui
return "unknown"
# Não altere as linhas abaixo: um novo episódio, fornecido pela entrada
length = float(input())
speakers = int(input())
laughs = float(input())
episode = pd.DataFrame({"length_min": [length], "speakers": [speakers], "laughs_per_min": [laughs]})
best = describe(episode)
print(f"Best guess: {best}")
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