Menu
CoddyTech

Pohon Mengajukan Pertanyaan

Termasuk bagian Pembelajaran Terawasi dalam perjalanan Machine Learning di Coddy. Pelajaran 27 dari 58.

Bab ini diakhiri dengan pohon yang menjelaskan pinjaman pertanian. Pohon keputusan memainkan permainan dua puluh pertanyaan: satu pertanyaan ya-atau-tidak tentang fitur setiap kali, hingga mencapai jawaban:

Diagram pohon. Kotak paling atas bertanya: lebar kelopak 0.8 cm atau kurang? Jawaban ya mengarah ke setosa. Jawaban tidak mengarah ke kotak kedua: panjang kelopak 4.95 cm atau kurang? Jawaban ya mengarah ke versicolor, jawaban tidak mengarah ke virginica

Pelatihan memilih setiap pertanyaan agar jawabannya memisahkan class sebersih mungkin:

from sklearn.tree import DecisionTreeClassifier

tree = DecisionTreeClassifier(max_depth=2, random_state=0)
tree.fit(X_train, y_train)  # panjang dan lebar mahkota bunga, cm
print(tree.predict([[4.5, 1.4]]))

Ini mencetak [1], versicolor. max_depth=2 memungkinkan dua pertanyaan per jalur. Tidak perlu penskalaan: setiap pertanyaan membaca satu fitur.

challenge icon

Tantangan

Sedang

Sebuah toko penyewaan kamera mengirim pesan pengingat saat peralatan mungkin terlambat dikembalikan. Kode awal membagi data penyewaan sebelumnya dan membaca data penyewaan baru ke dalam tabel satu baris new_rental.

  1. Latih pohon keputusan dengan maksimal 2 pertanyaan di setiap jalur (random_state=0).
  2. Cetak akurasi pengujiannya (3 desimal) dan jawabannya untuk penyewaan baru: likely late untuk 1, likely on time untuk 0.

Untuk toko lain:

Test accuracy: 0.792
This rental: likely on time

Coba sendiri

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

# Penyewaan sebelumnya: 1 pada late berarti perlengkapan dikembalikan terlambat
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)

# Penyewaan baru: jumlah minggu pemesanan, nilai perlengkapan, usia pelanggan, dan jumlah pengembalian terlambat sejauh ini
weeks = int(input())
value = int(input())
age = int(input())
late_before = int(input())
new_rental = pd.DataFrame([[weeks, value, age, late_before]], columns=features)

# Tulis kodemu di bawah ini
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pembelajaran Terawasi

Latihan sendiri: Compiler Python online