Menu
CoddyTech

Lendo uma árvore

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

As perguntas de uma árvore são legíveis, então você pode verificar o que ela aprendeu. Siga uma flor com 5.1 cm de comprimento e 1.6 cm de largura pela árvore de íris:

A árvore de íris representada por caixas, com um caminho iluminado em laranja: largura da pétala 0.80 ou menos? Não, 1.6. Comprimento da pétala 4.95 ou menos? Não, 5.1. O caminho termina na classe 2

export_text imprime as mesmas perguntas como texto, com um recuo por nível:

from sklearn.tree import export_text

print(export_text(tree, feature_names=["petal_length", "petal_width"]))

Isso imprime:

|--- petal_width <= 0.80
|   |--- class: 0
|--- petal_width >  0.80
|   |--- petal_length <= 4.95
|   |   |--- class: 1
|   |--- petal_length >  4.95
|   |   |--- class: 2

Cada linha responde apenas às perguntas em seu próprio caminho. A classe 2 é virginica, uma resposta sensata para pétalas longas e largas.

challenge icon

Desafio

Médio

A árvore de uma queijaria classifica um queijo como fresh, soft ou hard com base no teor de água e nas semanas de maturação. O programa inicial a treina e lê um novo queijo.

  1. Imprima as perguntas da árvore com os nomes das features.
  2. Execute-a, leia as perguntas e complete by_hand para que faça as mesmas perguntas com if/else e retorne a mesma resposta.

Após a impressão, para um queijo que a árvore classifica como soft:

By hand: soft
The tree: soft

Experimente você mesmo

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

# Uma linha por queijo: teor de água (%), semanas de maturação e tipo
cheeses = pd.read_csv("cheeses.csv")
features = ["moisture_pct", "aged_weeks"]
X_train, X_test, y_train, y_test = train_test_split(cheeses[features], cheeses["cheese"], test_size=0.25, random_state=0)
tree = DecisionTreeClassifier(max_depth=2, random_state=0)
tree.fit(X_train, y_train)

# Um novo queijo para identificar
moisture = int(input())
aged = int(input())
new_cheese = pd.DataFrame([[moisture, aged]], columns=features)

# Escreva seu código abaixo: imprima a árvore e, em seguida, faça by_hand responder da mesma forma que ela


def by_hand(moisture, aged):
    return "fresh"


# Não altere as linhas abaixo
print("By hand:", by_hand(moisture, aged))
print("The tree:", tree.predict(new_cheese)[0])
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