Menu
CoddyTech

Gradyan Artırma

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

Bir orman ağaçlarını yan yana büyütür. Gradyan artırma ise onları birbiri ardına büyütür: her yeni ağaç, kendisinden önceki ağaçların hâlâ neyi yanlış yaptığını öğrenir.

Burada bir smoothie barının satışlarına, ağaç ağaç uyduruyor:

Sıcaklığa göre 40 günlük smoothie satışlarını gösteren gri noktalar; yaklaşık 20'den 135'e yükseliyor. 1 ağaçtan sonraki noktalı çizgi düz ve kabaca bir basamak oluşturuyor, 3 ağaçtan sonraki kesikli çizgi daha iyi uyum sağlıyor ve 15 ağaçtan sonraki düz çizgi noktaların içinden geçiyor

Sınıflandırma için model GradientBoostingClassifier:

from sklearn.ensemble import GradientBoostingClassifier

boost = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1, random_state=0)
boost.fit(X_train, y_train)

learning_rate her düzeltmenin ne kadarının korunacağını belirler. Küçük adımlar daha temkinlidir, bu yüzden daha fazla ağaca ihtiyaç duyarlar.

challenge icon

Görev

Orta

Bir orkide yetiştiricisi hangi bitkilerin çiçek açacağını öğrenmek istiyor. Başlangıç kodu orchids.csv dosyasını böler, bir orman modelinin puanını hesaplar ve ağaç sayısını okur.

  1. rates içindeki her oran için, o kadar ağaçla boosting modelini eğit (random_state=0) ve test doğruluğunu yazdır.
  2. En iyi oranı yazdır. Eşitlik durumunda daha önce geleni koru.

Başka bir yetiştirici için ve 20 değeriyle:

Forest: 0.860
Boosting at rate 0.01: 0.600
Boosting at rate 0.1: 0.860
Boosting at rate 1.0: 0.900
Best rate for 20 trees: 1.0

Ardından birkaç farklı ağaç sayısı dene: boosting hangi durumda orman modelinden daha iyi sonuç verir?

Kendin dene

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier

# Yetiştiricinin raflarındaki orkideler: bu yıl çiçek açtı (1) veya açmadı (0)
orchids = pd.read_csv("orchids.csv")
X = orchids.drop(columns="bloomed")
y = orchids["bloomed"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
trees = int(input())
rates = [0.01, 0.1, 1.0]

# Aşağıdaki satırları değiştirmeyin: karşılaştırma yapılacak orman modeli
forest = RandomForestClassifier(n_estimators=100, random_state=0)
forest.fit(X_train, y_train)
print(f"Forest: {forest.score(X_test, y_test):.3f}")

# 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