Menu
CoddyTech

Tinh chỉnh quy trình

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

Bạn có thể tinh chỉnh pipeline như mọi mô hình khác, bao gồm cả các bước làm sạch dữ liệu. Mỗi thiết lập được đặt tên theo bước của nó, tiếp theo là hai dấu gạch dưới, rồi đến tham số:

pipe = make_pipeline(SimpleImputer(), DecisionTreeClassifier(random_state=0))
grid = {"simpleimputer__strategy": ["mean", "median", "most_frequent"],
        "decisiontreeclassifier__max_depth": [2, 4, 6, 8]}
search = GridSearchCV(pipe, grid, cv=5)
search.fit(X_train, y_train)

make_pipeline đặt tên cho từng bước theo tên lớp của bước đó, viết thường. Với 200 lần phóng tên lửa mô hình, đạt độ cao 300 m hay không, 12 cấu hình cho điểm:

Lưới độ chính xác CV trung bình: các hàng ứng với cách điền giá trị trung bình, trung vị và most_frequent, các cột ứng với độ sâu cây 2, 4, 6 và 8. Điểm số nằm trong khoảng từ 0.733 đến 0.820, ô ứng với cách điền giá trị trung vị ở độ sâu 6 được đánh dấu là tốt nhất với điểm 0.820

Mỗi lần chia phần, toàn bộ pipeline đều được khớp lại, kể cả bộ điền giá trị thiếu, nên không phần nào nhìn trước các hàng dùng để kiểm tra nó.

challenge icon

Thử thách

Trung bình

Một trường âm nhạc muốn biết học sinh học violin nào sẽ vượt qua kỳ thi trình độ. Đoạn code khởi đầu đọc ba giá trị k, nhưng tìm kiếm trên lưới qua một pipeline gặp lỗi.

  1. Sửa hai khóa của lưới để quá trình tìm kiếm tinh chỉnh chiến lược của bộ điền khuyết và số láng giềng của k-NN.
  2. In các thiết lập tốt nhất, độ chính xác qua kiểm định chéo và độ chính xác trên tập kiểm tra như bên dưới.

Một trường khác, với 2, 4, 6:

Best: mean fills, 6 neighbors
Cross-validated accuracy: 0.720
Test accuracy: 0.820

Tự làm thử

import pandas as pd
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.pipeline import make_pipeline

# Học viên violin: đạt kỳ thi trình độ (1) hoặc không đạt (0); một số nhật ký luyện tập
# và điểm đọc bản nhạc tại chỗ bị thiếu
students = pd.read_csv("violins.csv")
X = students.drop(columns="passed")
y = students["passed"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
ks = [int(input()), int(input()), int(input())]

# Quá trình tìm kiếm này dừng vì lỗi: sửa lưới tham số
pipe = make_pipeline(SimpleImputer(), StandardScaler(), KNeighborsClassifier())
grid = {
    "strategy": ["mean", "median"],
    "n_neighbors": ks,
}
search = GridSearchCV(pipe, grid, cv=5)
search.fit(X_train, y_train)

# 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