Menu
CoddyTech

Tầm quan trọng của đặc trưng

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 30 trên 58.

Cây dựa vào những đặc trưng nào? feature_importances_ cho biết tỷ trọng của mỗi đặc trưng trong việc sắp xếp mà các câu hỏi của cây thực hiện, và tổng các tỷ trọng bằng 1:

Biểu đồ thanh nằm ngang cho cây iris có độ sâu 3: chiều rộng cánh hoa 0.58, chiều dài cánh hoa 0.42, chiều rộng lá đài 0.00, chiều dài lá đài 0.00

Sắp xếp thành một Series, chúng tạo thành biểu đồ xếp hạng. ax.barh vẽ các thanh nằm ngang, giúp vừa các tên dài:

imp = pd.Series(tree.feature_importances_, index=iris.feature_names).sort_values()
ax.barh(imp.index, imp.values)

Giá trị 0 có nghĩa là cây chưa bao giờ hỏi về đặc trưng đó. Các lá đài vẫn có thể quan trọng: những cánh hoa đã cho cây biết chúng sẽ làm gì.

challenge icon

Thử thách

Trung bình

Một trường dạy lướt sóng muốn biết điều gì giúp người mới đứng được trên ván trong tuần đầu tiên. Chương trình đọc độ sâu, huấn luyện một cây có độ sâu đó rồi thiết lập biểu đồ.

  1. Đưa các mức độ quan trọng vào một Series, đặt tên theo đặc trưng và sắp xếp từ nhỏ nhất trước.
  2. In đặc trưng hàng đầu (3 chữ số thập phân) và các đặc trưng chưa từng được hỏi đến, như bên dưới.
  3. Vẽ chúng thành các thanh ngang rồi hiển thị.

Với một trường dạy bơi:

Top feature: pool_hours (0.612)
Never asked: ['goggles']

Sau đó, Coddy mô tả biểu đồ của bạn. Biểu đồ của họ trông như sau:

Các thanh ngang có tiêu đề Điều gì giúp người học bơi tiến bộ?, thanh lớn nhất ở trên cùng: pool_hours khoảng 0.61, can_float 0.21, age 0.10, lessons_per_week 0.08, goggles 0

Tự làm thử

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

depth = int(input())

# Mỗi hàng ứng với một người mới học: 1 trong standing nghĩa là họ đã đứng lên ván trong tuần đầu tiên
surf = pd.read_csv("surfschool.csv")
features = ["age", "fitness", "days_surfed", "skated_before", "lesson_hours", "wetsuit_fit"]
X_train, X_test, y_train, y_test = train_test_split(surf[features], surf["standing"], test_size=0.25, random_state=0)
tree = DecisionTreeClassifier(max_depth=depth, random_state=0)
tree.fit(X_train, y_train)

fig, ax = plt.subplots(layout="constrained")  # chừa chỗ cho các tên dài
ax.set_title("What Gets Beginners Standing?")
ax.set_xlabel("Importance")

# Viết code của bạn bên dưới
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