Gom tất cả lại với nhau
Bạn có hai mối bận tâm về pipeline tại startup phát hiện loạn nhịp tim:
- Ứng dụng được huấn luyện trên bệnh nhân ở mọi độ tuổi, nhưng hiện chủ yếu được dùng bởi người tập thể dục, thường là người trẻ. Bạn nghi ngờ đây có thể là một trường hợp dịch chuyển miền (domain shift), nên muốn loại bỏ mọi ví dụ trên 50 tuổi.
- Bạn vẫn lo về overfitting, nên muốn xem liệu giảm độ phức tạp của random forest classifier và chọn lọc một số đặc trưng có giúp cải thiện hay không.
Bạn sẽ tạo một pipeline với bước chọn đặc trưng SelectKBest() và RandomForestClassifier, cả hai đều đã được import. Bạn cũng có GridSearchCV(), Pipeline, numpy là np và pickle. Dữ liệu có sẵn dưới tên arrh.
Bài tập này là một phần của khóa học
Thiết kế quy trình Machine Learning bằng Python
Hướng dẫn bài tập
- Tạo một pipeline với
SelectKBest()là bướcftvàRandomForestClassifier()là bướcclf. - Tạo một lưới tham số để tinh chỉnh
ktrongSelectKBest()vàmax_depthtrongRandomForestClassifier(). - Dùng
GridSearchCV()để tối ưu pipeline của bạn theo lưới đó và dữ liệu chỉ gồm những người dưới 50 tuổi. - Lưu pipeline đã tối ưu vào một pickle để đưa vào sản xuất.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# Create a pipeline
pipe = Pipeline([
('ft', ____), ('clf', ____(random_state=2))])
# Create a parameter grid
grid = {'ft__k':[5, 10], '____':[10, 20]}
# Execute grid search CV on a dataset containing under 50s
grid_search = ____(pipe, param_grid=grid)
arrh = arrh.____[____(arrh['age'] < 50)]
____.____(arrh.drop('class', 1), arrh['class'])
# Push the fitted pipeline to production
with ____('pipe.pkl', ____) as file:
pickle.dump(____, file)