Có cách nào được xây dựng để thực hiện lựa chọn tính năng brute-force trong scikit-learning không? I E. Đánh giá triệt để tất cả các kết hợp có thể có của các tính năng đầu vào, và sau đó tìm tập hợp con tốt nhất. Tôi quen thuộc với lớp "Loại bỏ tính năng đệ quy" nhưng tôi đặc biệt thú vị trong việc đánh giá tất cả các kết hợp có thể có của các tính năng đầu vào sau cái kia.Tính năng chọn lọc triệt để trong học tập bằng scikit?
Trả lời
Không, lựa chọn tập hợp con tốt nhất không được triển khai. Cách dễ nhất để làm điều đó là tự viết nó. Điều này sẽ giúp bạn bắt đầu:
from itertools import chain, combinations
from sklearn.cross_validation import cross_val_score
def best_subset_cv(estimator, X, y, cv=3):
n_features = X.shape[1]
subsets = chain.from_iterable(combinations(xrange(k), k + 1)
for k in xrange(n_features))
best_score = -np.inf
best_subset = None
for subset in subsets:
score = cross_val_score(estimator, X[:, subset], y, cv=cv).mean()
if score > best_score:
best_score, best_subset = score, subset
return best_subset, best_score
này thực hiện k -fold cross-validation bên trong vòng lặp, vì vậy nó sẽ phù hợp với k ᵖ ước lượng khi đưa ra dữ liệu với p tính năng.
Cảm ơn câu trả lời của bạn !! – Dov
Có lỗi trong mã. Nó phải là 'kết hợp (xrange (n_features))'. – nopper
Mẹo hiệu suất - khi so sánh giữa các mô hình khác nhau có cùng kích thước k, không cần phải thực hiện cv - đủ để so sánh thống kê tập huấn như R^2. Chỉ khi so sánh các ứng cử viên tốt nhất với các kích cỡ khác nhau cv là cần thiết. Xem chương 6 trong cuốn sách tuyệt vời này: http://www-bcf.usc.edu/~gareth/ISL/ – ihadanny
Nếu bạn đang chạy mã này bằng Python 3 xrange()
đã được đổi tên thành range()
.
- 1. bộ lọc kiểu séc + bộ lọc triệt tiêu
- 2. luận 'tiết' trong scikit-học
- 3. Regression tuyến tính và Gradient Descent trong Scikit học/Pandas?
- 4. Python scikit học cắt pca.explained_variance_ratio_
- 5. Bắt mô hình thuộc tính từ scikit-học đường ống
- 6. Lựa chọn tính năng tìm hiểu Scikit cho dữ liệu hồi quy
- 7. Sử dụng tính năng DecisionTreeClassifier scikit để cluster
- 8. Làm thế nào để sử dụng tùy chọn bộ lọc triệt tiêu nội dòng của cppcheck cho mã C++?
- 9. triệt tiêu in ấn mỗi bài tập
- 10. Python scikit học MLPClassifier "hidden_layer_sizes"
- 11. Lọc một tập trong Clojure clojure.set/chọn vs clojure.core/lọc
- 12. scikit tìm hiểu: số lượng các tính năng tốt nhất (k) không được chọn
- 13. Scikit Học tập HMM với tập hợp các chuỗi quan sát
- 14. Sự khác biệt giữa SVC và SVM trong việc học bằng scikit là gì?
- 15. triển khai thưa thớt của tính toán khoảng cách trong python/scikit-học
- 16. Làm thế nào để triệt để thanh lọc và cài đặt lại postgresql trên ubuntu?
- 17. Loại bỏ tính năng đệ quy và tìm kiếm lưới bằng cách sử dụng scikit-learn
- 18. Chức năng chuyển tiếp chọn lọc
- 19. quán tưởng cây quyết định trong scikit-học
- 20. Lựa chọn tính năng trong MATLAB
- 21. Lỗi khi nhập scikit-học module
- 22. Các học viên NLP sử dụng các tính năng nào để chọn ra tên tiếng Anh?
- 23. Mercurial chọn lọc các tập tin htaccess
- 24. Cách sử dụng PCA scikit để biết các tính năng giảm và biết các tính năng nào bị loại bỏ
- 25. Giá trị R2 trong Scikit học được tính như thế nào?
- 26. Vượt qua một dict để scikit tìm hiểu ước tính
- 27. Lưu phân loại vào đĩa trong scikit-học
- 28. Giữ với các chức năng NumPy/scikit
- 29. Sự khác biệt giữa lựa chọn tính năng, trích xuất tính năng, trọng số tính năng
- 30. lấy tính năng trung gian từ một đường ống dẫn trong Scikit (Python)
Điều gì đó giống như lựa chọn tính năng tham lam? –
@AbhishekThakur Cảm ơn. nhưng Không, tôi muốn một lựa chọn tính năng bạo lực "ngu ngốc" - thực ra tôi có thể làm điều đó trong một vòng lặp trên tất cả các kết hợp. Nhưng thích một phương pháp xây dựng/đường ống nếu tồn tại như vậy ?? – Dov