Menu
CoddyTech

Ağaç Derinliği

Coddy'nin Machine Learning Journey'sinin Denetimli Öğrenme bölümünün bir parçası. Ders 29 / 58.

Bir ağaç, her eğitim satırının kendine ait bir yanıtı olana kadar soru sormaya devam edebilir. O zaman öğrenmiş değil, ezberlemiş olur:

Gürültülü yarım ay verilerinde 1'den 12'ye kadar derinlikteki ağaçların eğitim ve test doğruluğu. Eğitim doğruluğu 8. derinlikte 1.0'a yükselir ve ezberleme olarak etiketlenir. Test doğruluğu, kesikli bir çizgiyle gösterilen 6. derinlikte 0.907 ile zirveye ulaşır, ardından yaklaşık 0.87'ye düşer

Derin ağaçlar kendi eğitim satırlarındaki gürültüyü öğrenir; bu yüzden test doğruluğu zirve yapar, ardından düşer. Birkaç derinlik deneyin:

train = []
test = []
for d in range(1, 13):
    tree = DecisionTreeClassifier(max_depth=d, random_state=0)
    tree.fit(X_train, y_train)
    train.append(tree.score(X_train, y_train))
    test.append(tree.score(X_test, y_test))

Bu ayarlarda, 6 derinliği yeni satırlarda en iyi sonucu verir: şimdilik bunu koruyun. 8 derinliğinden itibaren ağaç, ezberlediği satırlarda kusursuz, geri kalanlarda ise daha kötü sonuç verir.

challenge icon

Görev

Orta

Bir teleskop araştırması, gökyüzü cisimlerini yıldızlar ve galaksiler olarak sınıflandırır. Başlangıç kodu bunları ayırır ve grafiği hazırlar.

  1. depths içindeki her derinlik için bir ağaç eğitin (random_state=0) ve her iki doğruluğu da kaydedin.
  2. Aşağıdaki gibi, test doğruluğunun en iyi olduğu derinliği yazdırın.
  3. train ve test etiketleriyle her iki çizgiyi de çizin, en iyi derinliği kesikli bir ax.axvline çizgisiyle işaretleyin, gösterge ekleyin ve grafiği gösterin.

Bir mango ayırıcı için:

Best depth: 5, test accuracy 0.867

Ardından Coddy grafiğinizi açıklar. Onlarınki şöyle görünüyor:

Başlığı Olgun mu Değil mi? olan, yatay ekseninde ağaç derinliği 1'den 10'a kadar gösterilen bir grafik: yaklaşık 0.98'e yükselen mavi bir eğitim çizgisi, 5. derinliğin yakınında yaklaşık 0.87 ile zirve yapan turuncu bir test çizgisi ve o noktada kesikli dikey bir çizgi; ayrıca bir gösterge

Kendin dene

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier

# Teleskop araştırmasındaki her gök cismi için bir satır: galaxy sütununda 1 galaksi, 0 yıldız anlamına gelir
sky = pd.read_csv("sky.csv")
features = ["brightness_mag", "size_arcsec", "roundness", "color_index"]
X_train, X_test, y_train, y_test = train_test_split(sky[features], sky["galaxy"], test_size=0.25, random_state=0)
depths = range(1, 11)

fig, ax = plt.subplots()
ax.set_title("Star or Galaxy?")
ax.set_xlabel("Tree depth")
ax.set_ylabel("Accuracy")

# Kodunuzu aşağıya yazın
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Denetimli Öğrenme bölümündeki tüm dersler

Kendi başına pratik yap: Online Python derleyicisi