Tôi hiện đang làm việc với Python và Scikit tìm hiểu cho mục đích phân loại và đọc một số xung quanh GridSearch Tôi nghĩ rằng đây là một cách tuyệt vời để tối ưu hóa các tham số ước tính của tôi để có kết quả tốt nhất.
Phương pháp của tôi là thế này:
- Chia dữ liệu của tôi thành đào tạo / kiểm tra.
- Sử dụng GridSearch với xác thực 5Fold Cross để đào tạo và kiểm tra các công cụ ước tính của tôi (Random Forest, Gradient Boost, SVC trong số những người khác) để có được các công cụ ước tính tốt nhất với sự kết hợp tối ưu của các tham số siêu tốc.
- Sau đó, tôi tính toán các số liệu trên từng công cụ ước tính của mình như Chính xác, Nhớ lại, FMeasure và Matthews Correlation Coffic, sử dụng bộ kiểm tra của tôi để dự đoán các phân loại và so sánh chúng với các nhãn lớp thực tế.
Ở giai đoạn này, tôi thấy hành vi lạ và tôi không biết phải tiến hành như thế nào. Tôi có lấy .best_estimator_ từ GridSearch và sử dụng điều này làm đầu ra 'tối ưu' từ tìm kiếm lưới và thực hiện dự đoán bằng công cụ ước tính này không? Nếu tôi làm điều này, tôi thấy rằng các số liệu của giai đoạn 3 thường thấp hơn nhiều so với việc tôi chỉ đơn giản là đào tạo trên tất cả các dữ liệu đào tạo và kiểm tra trên bộ kiểm tra. Hoặc, tôi chỉ đơn giản lấy đối tượng GridSearchCV đầu ra làm công cụ ước tính mới ? Nếu tôi làm điều này, tôi sẽ nhận được điểm số tốt hơn cho số liệu giai đoạn 3 của mình, nhưng có vẻ kỳ quặc khi sử dụng đối tượng GridSearchCV thay vì trình phân loại dự định (Ví dụ: Khu rừng ngẫu nhiên) ...
EDIT: Vậy câu hỏi của tôi là sự khác biệt giữa đối tượng GridSearchCV được trả về và thuộc tính .best_estimator_ là gì? Tôi nên sử dụng cái nào trong số này để tính các số liệu tiếp theo? Tôi có thể sử dụng đầu ra này như một trình phân loại thông thường (ví dụ: sử dụng dự đoán) hoặc nếu không thì tôi nên sử dụng nó như thế nào?
refit=False
sau đóclf.fit
sẽ không được thực hiện với sự phân loại tốt nhất?