Menu
CoddyTech

Dlaczego lasy działają

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

Drzewa w lesie celowo się różnią. Każde jest trenowane na próbie bootstrapowej: wierszach losowanych ze zwracaniem, więc niektóre się powtarzają, a inne są pomijane.

Każde pytanie wybiera też spośród losowo wybranych kilku cech. Drzewa popełniają różne błędy, a głosowanie je eliminuje. Dwa gatunki świetlików:

Dwa wykresy przedstawiające 150 świetlików: długość błysku na osi poziomej, a przerwa na osi pionowej; niebieskie kółka oznaczają jeden gatunek, a czerwone trójkąty drugi. Po lewej jedno drzewo: jego granica ma wąskie pasma sięgające pojedynczych świetlików. Po prawej las złożony ze 100 drzew: jedna gładka granica między grupami

Las zachowuje pas tylko tam, gdzie zgadza się większość drzew.

Drzewa znajdują się w forest.estimators_:

third = forest.estimators_[2]
print(round(third.score(X_test, y_test), 3))

To wypisuje 0.737. Cały las uzyskuje wynik 0.895.

challenge icon

Wyzwanie

Średni

Czy las pokonuje własne drzewa? Kod początkowy dopasowuje forest do danych z riders.csv — rowerzystów, którzy ukończyli lub nie ukończyli 160-kilometrowej jazdy w czasie krótszym niż 6 godzin — i przygotowuje wykres.

  1. Oblicz wynik każdego drzewa w lesie na wierszach testowych.
  2. Utwórz histogram wyników z użyciem bins=10 i zaznacz forest_acc czerwoną pionową linią.
  3. Wypisz, ile drzew pokonuje las.

Inna jazda wypisała The forest beats 88 of its 100 trees i narysowała taki wykres:

Histogram zatytułowany The Forest and Its Trees: dokładność testowa drzew wynosi od około 0.53 do 0.85, większość wyników jest bliska 0.70, a czerwona pionowa linia znajduje się w pobliżu 0.77, na prawo od większości słupków

Coddy opisze następnie Twój wykres.

Spróbuj swoich sił

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier

# Uczestnicy charytatywnego przejazdu na dystansie 160 km: ukończyli go w mniej niż 6 godzin (1) lub nie (0)
riders = pd.read_csv("riders.csv")
features = ["weekly_km", "long_ride_km", "age", "years_riding", "rest_days", "sleep_hours"]
X = riders[features].to_numpy()  # zwykła tablica, w postaci oczekiwanej przez drzewa lasu
y = riders["under_6h"].to_numpy()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)

forest = RandomForestClassifier(n_estimators=100, random_state=0)
forest.fit(X_train, y_train)
forest_acc = forest.score(X_test, y_test)

fig, ax = plt.subplots()
ax.set_title("The Forest and Its Trees")
ax.set_xlabel("Test accuracy")
ax.set_ylabel("Trees")

# Napisz swój kod poniżej
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