Menu
CoddyTech

Ağaçlar Soru Soruyor

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

Bu bölüm, bir çiftlik kredisini açıklayan bir ağaçla sona eriyor. Bir karar ağacı, yirmi soru oyununa benzer: Bir özelliğe ilişkin her seferinde bir evet-hayır sorusu sorar ve sonunda bir yanıta ulaşır:

Bir ağaç diyagramı. En üstteki kutuda şu soru soruluyor: Taç yaprağı genişliği 0.8 cm veya daha az mı? Evet yanıtı setosa'ya götürüyor. Hayır yanıtı ikinci bir kutuya götürüyor: Taç yaprağı uzunluğu 4.95 cm veya daha az mı? Evet yanıtı versicolor'a, hayır yanıtı virginica'ya götürüyor

Eğitim, yanıtları sınıfları olabildiğince temiz biçimde ayıracak şekilde her soruyu seçer:

from sklearn.tree import DecisionTreeClassifier

tree = DecisionTreeClassifier(max_depth=2, random_state=0)
tree.fit(X_train, y_train)  # taç yaprağı uzunluğu ve genişliği, cm
print(tree.predict([[4.5, 1.4]]))

Bu, [1], versicolor değerini yazdırır. max_depth=2 her yol için iki soruya izin verir. Ölçeklendirme gerekmez: her soru bir özelliği okur.

challenge icon

Görev

Orta

Bir kamera kiralama dükkânı, ekipman geç dönebilecekse hatırlatma mesajı gönderir. Başlangıç kodu geçmiş kiralamaları böler ve yeni bir kiralamayı tek satırlık new_rental tablosuna okur.

  1. Her yol için en fazla 2 soru içeren bir karar ağacı eğit (random_state=0).
  2. Test doğruluğunu (3 ondalık basamakla) ve yeni kiralama için verdiği yanıtı yazdır: 1 için likely late, 0 için likely on time.

Başka bir dükkân için:

Test accuracy: 0.792
This rental: likely on time

Kendin dene

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

# Geçmiş kiralamalar: late sütunundaki 1, ekipmanın geç iade edildiği anlamına gelir
rentals = pd.read_csv("rentals.csv")
features = ["rental_weeks", "gear_value_usd", "customer_age", "late_before"]
X_train, X_test, y_train, y_test = train_test_split(rentals[features], rentals["late"], test_size=0.25, random_state=0)

# Yeni bir kiralama: rezerve edilen hafta sayısı, ekipmanın değeri, müşterinin yaşı ve şimdiye kadarki geç iadeleri
weeks = int(input())
value = int(input())
age = int(input())
late_before = int(input())
new_rental = pd.DataFrame([[weeks, value, age, late_before]], columns=features)

# 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