Menu
CoddyTech

Árvores fazem perguntas

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

Este capítulo termina com uma árvore que explica um empréstimo agrícola. Uma árvore de decisão brinca de vinte perguntas: uma pergunta de sim ou não sobre uma característica de cada vez, até chegar a uma resposta:

Um diagrama de árvore. A caixa superior pergunta: largura da pétala de 0,8 cm ou menos? Sim leva a setosa. Não leva a uma segunda caixa: comprimento da pétala de 4,95 cm ou menos? Sim leva a versicolor, não leva a virginica

O treinamento escolhe cada pergunta de modo que suas respostas separem as classes da forma mais clara possível:

from sklearn.tree import DecisionTreeClassifier

tree = DecisionTreeClassifier(max_depth=2, random_state=0)
tree.fit(X_train, y_train)  # comprimento e largura da pétala, cm
print(tree.predict([[4.5, 1.4]]))

Isso imprime [1], versicolor. max_depth=2 permite duas perguntas por caminho. Não é necessário fazer o escalonamento: cada pergunta lê uma característica.

challenge icon

Desafio

Médio

Uma loja de aluguel de câmeras envia uma mensagem de lembrete quando há a possibilidade de o equipamento ser devolvido com atraso. O código inicial divide os aluguéis anteriores e lê um novo aluguel na tabela de uma linha new_rental.

  1. Treine uma árvore de decisão com no máximo 2 perguntas por caminho (random_state=0).
  2. Imprima a precisão nos dados de teste (3 casas decimais) e a resposta para o novo aluguel: likely late para 1, likely on time para 0.

Para outra loja:

Test accuracy: 0.792
This rental: likely on time

Experimente você mesmo

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier

# Locações anteriores: 1 em late significa que o equipamento foi devolvido com atraso
rentals = pd.read_csv("rentals.csv")
features = ["rental_weeks", "gear_value_usd", "customer_age", "late_before"]
X_train, X_test, y_train, y_test = train_test_split(rentals[features], rentals["late"], test_size=0.25, random_state=0)

# Uma nova locação: semanas reservadas, valor do equipamento, idade do cliente e devoluções com atraso até agora
weeks = int(input())
value = int(input())
age = int(input())
late_before = int(input())
new_rental = pd.DataFrame([[weeks, value, age, late_before]], columns=features)

# 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