Menu
CoddyTech

Czytanie drzewa

Część sekcji Uczenie nadzorowane ścieżki Machine Learning w Coddy. Lekcja 28 z 58.

Pytania drzewa są czytelne, więc możesz sprawdzić, czego się nauczyło. Prześledź drogę kwiatu o długości 5.1 cm i szerokości 1.6 cm w dół drzewa irysów:

Drzewo irysów przedstawione jako pola, z jedną ścieżką podświetloną na pomarańczowo: szerokość płatka wynosi 0.80 lub mniej? Nie, 1.6. Długość płatka wynosi 4.95 lub mniej? Nie, 5.1. Ścieżka kończy się na klasie 2

export_text wypisuje te same pytania jako tekst, z jednym wcięciem na poziom:

from sklearn.tree import export_text

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

To wyświetla:

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

Każdy wiersz odpowiada tylko na pytania ze swojej ścieżki. Klasa 2 to virginica, co jest rozsądną odpowiedzią w przypadku długich, szerokich płatków.

challenge icon

Wyzwanie

Średni

Drzewo sklepu z serami określa rodzaj sera — świeży, miękki lub twardy — na podstawie zawartości wody i liczby tygodni dojrzewania. Kod początkowy trenuje je i wczytuje dane nowego sera.

  1. Wyświetl pytania drzewa wraz z nazwami cech.
  2. Uruchom je, odczytaj pytania i uzupełnij by_hand, aby zadawała te same pytania za pomocą if/else i zwracała tę samą odpowiedź.

Po wyświetleniu drzewa, dla sera, który drzewo określa jako miękki:

By hand: soft
The tree: soft

Spróbuj swoich sił

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

# Jeden wiersz na każdy ser: zawartość wody (%), liczba tygodni dojrzewania i rodzaj sera
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)

# Nowy ser, którego rodzaj trzeba określić
moisture = int(input())
aged = int(input())
new_cheese = pd.DataFrame([[moisture, aged]], columns=features)

# Napisz poniżej swój kod: wypisz drzewo, a następnie w by_hand zwróć taką samą odpowiedź jak ono


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


# Nie zmieniaj poniższych wierszy
print("By hand:", by_hand(moisture, aged))
print("The tree:", tree.predict(new_cheese)[0])
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Uczenie nadzorowane

Poćwicz samodzielnie: Kompilator Python online