Menu
CoddyTech

Đọc cây

Thuộc phần Học có giám sát trong hành trình Machine Learning của Coddy. Bài học 28 trên 58.

Các câu hỏi của cây có thể đọc được, nên bạn có thể kiểm tra cây đã học được gì. Theo dõi một bông hoa dài 5.1 cm và rộng 1.6 cm qua cây iris:

Cây iris gồm các ô, với một đường đi được tô sáng màu cam: chiều rộng cánh hoa không quá 0.80? Không, 1.6. Chiều dài cánh hoa không quá 4.95? Không, 5.1. Đường đi kết thúc ở lớp 2

export_text in ra các câu hỏi giống như văn bản, với một mức thụt lề cho mỗi cấp:

from sklearn.tree import export_text

print(export_text(tree, feature_names=["petal_length", "petal_width"]))

Lệnh này in ra:

|--- petal_width <= 0.80
|   |--- class: 0
|--- petal_width >  0.80
|   |--- petal_length <= 4.95
|   |   |--- class: 1
|   |--- petal_length >  4.95
|   |   |--- class: 2

Mỗi hàng chỉ trả lời các câu hỏi trên đường đi riêng của nó. Lớp 2 là virginica, một câu trả lời hợp lý cho những cánh hoa dài và rộng.

challenge icon

Thử thách

Trung bình

Cây quyết định của cửa hàng phô mai phân loại phô mai thành tươi, mềm hoặc cứng dựa trên hàm lượng nước và số tuần ủ. Mã khởi tạo huấn luyện cây rồi đọc thông tin về một miếng phô mai mới.

  1. In ra các câu hỏi của cây cùng tên các đặc trưng.
  2. Chạy cây, đọc các câu hỏi rồi hoàn thành by_hand để hàm này đặt những câu hỏi tương tự bằng if/else và trả về cùng một đáp án.

Sau khi in ra cây, với một miếng phô mai mà cây phân loại là mềm:

By hand: soft
The tree: soft

Tự làm thử

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

# Mỗi hàng ứng với một loại phô mai: hàm lượng nước (%), số tuần ủ và loại phô mai
cheeses = pd.read_csv("cheeses.csv")
features = ["moisture_pct", "aged_weeks"]
X_train, X_test, y_train, y_test = train_test_split(cheeses[features], cheeses["cheese"], test_size=0.25, random_state=0)
tree = DecisionTreeClassifier(max_depth=2, random_state=0)
tree.fit(X_train, y_train)

# Một loại phô mai mới cần xác định tên
moisture = int(input())
aged = int(input())
new_cheese = pd.DataFrame([[moisture, aged]], columns=features)

# Viết code bên dưới: in ra cây quyết định, rồi trả lời trong by_hand giống như cây


def by_hand(moisture, aged):
    return "fresh"


# Đừng thay đổi các dòng bên dưới
print("By hand:", by_hand(moisture, aged))
print("The tree:", tree.predict(new_cheese)[0])
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Học có giám sát

Tự luyện tập: Trình biên dịch Python online