Mục lục:
- Cross-validating:
- Điều quan trọng nhất cần biết là các quy trình trở nên khá lớn vì SVC tạo ra 10 mô hình, nó lặp đi lặp lại 10 lần mỗi lần sử dụng tính hợp lệ chéo, cho tổng số 100 mô hình.
Video: Vectors, what even are they? | Essence of linear algebra, chapter 1 2025
Hầu hết các máy tính ngày nay là đa lõi (hai hoặc nhiều bộ vi xử lý trong một gói), một số với nhiều CPU vật lý. Một trong những hạn chế quan trọng nhất của Python là nó sử dụng một lõi đơn theo mặc định. (Nó được tạo ra trong một thời điểm khi các lõi đơn là chuẩn).
Các dự án khoa học dữ liệu đòi hỏi khá nhiều tính toán. Đặc biệt, một phần của khía cạnh khoa học của khoa học dữ liệu dựa vào các thử nghiệm và thử nghiệm lặp lại trên các ma trận dữ liệu khác nhau. Đừng quên rằng làm việc với lượng dữ liệu khổng lồ có nghĩa là hầu hết các biến đổi tốn nhiều thời gian lặp lại quan sát sau khi quan sát (ví dụ, các thao tác giống nhau và không liên quan đến các phần khác nhau của ma trận).
Sử dụng nhiều lõi CPU tăng tốc tính toán bằng một yếu tố gần như phù hợp với số lõi. Ví dụ, có bốn lõi sẽ có nghĩa là làm việc tốt nhất bốn lần nhanh hơn. Bạn không nhận được tăng gấp bốn lần vì có quá phí khi bắt đầu quá trình song song - các trường hợp chạy Python mới phải được thiết lập với đúng thông tin trong bộ nhớ và được khởi chạy; do đó, cải thiện sẽ ít hơn tiềm năng có thể đạt được nhưng vẫn còn đáng kể.
Biết cách sử dụng nhiều hơn một CPU là một kỹ năng tiên tiến nhưng vô cùng hữu ích để tăng số lượng các phân tích đã hoàn thành và tăng tốc hoạt động của bạn khi thiết lập và khi sử dụng các sản phẩm dữ liệu của bạn.
Đa xử lý bằng cách lặp lại cùng một mã và bộ nhớ trong các phiên bản Python khác nhau (các nhân viên), tính kết quả cho mỗi người trong số họ, và trả về kết quả gộp lại cho giao diện điều khiển ban đầu chính. Nếu cá thể ban đầu của bạn đã chiếm nhiều bộ nhớ RAM có sẵn, sẽ không thể tạo ra các trường hợp mới, và máy tính của bạn sẽ hết bộ nhớ.
Cross-validating:
Kiểm tra kết quả của một giả thuyết máy học sử dụng các dữ liệu huấn luyện và thử nghiệm khác nhau
-
Tìm kiếm lưới: Thay đổi các thông số siêu động một cách có hệ thống của một giả thuyết máy học và thử nghiệm các kết quả kết quả
-
Dự đoán đa lớp: Chạy một thuật toán nhiều lần đối với nhiều mục tiêu khi có nhiều kết quả mục tiêu khác nhau để dự đoán cùng lúc
-
Ensemble máy học tập phương pháp: Mô hình hóa một số lượng lớn các nhà phân loại, mỗi một loại độc lập với nhau, chẳng hạn như khi sử dụng mô hình dựa trên RandomForest
-
Bạn không phải làm gì đặc biệt để tận dụng tính toán song song - bạn có thể kích hoạt tính song song bằng cách thiết lập n_jobs-tham số cho một số lõi nhiều hơn 1 hoặc bằng cách đặt giá trị là -1, có nghĩa là bạn muốn sử dụng tất cả các thể hiện CPU có sẵn. Nếu bạn không chạy mã từ bảng điều khiển hoặc từ Máy tính xách tay IPython, điều cực kỳ quan trọng là bạn phải tách mã của mình khỏi bất kỳ gói nhập khẩu hoặc phân bổ biến toàn cầu nào trong kịch bản của bạn bằng cách sử dụng if __name __ == '__ main__': lệnh ở đầu bất kỳ mã nào thực hiện song song đa lõi. Câu lệnh if kiểm tra xem chương trình có chạy trực tiếp hay được gọi bởi một giao diện điều khiển Python đang chạy, để tránh sự nhầm lẫn hay lỗi của quá trình đa nhân (như đệ quy gọi nó là song song).
Chứng minh quá trình đa xử lý
Bạn nên sử dụng IPython khi bạn chạy một cuộc biểu tình về cách tính đa năng có thể thực sự tiết kiệm thời gian cho bạn trong các dự án khoa học dữ liệu. Sử dụng IPython cung cấp lợi thế của việc sử dụng lệnh ma thuật% timeit để thực thi thời gian. Bạn bắt đầu bằng cách tải một tập hợp dữ liệu đa lớp, một thuật toán học máy phức tạp (Hỗ trợ Phân loại Vừa, hoặc SVC) và một thủ tục xác nhận chéo để ước lượng kết quả đáng tin cậy từ tất cả các thủ tục.
Điều quan trọng nhất cần biết là các quy trình trở nên khá lớn vì SVC tạo ra 10 mô hình, nó lặp đi lặp lại 10 lần mỗi lần sử dụng tính hợp lệ chéo, cho tổng số 100 mô hình.
từ người lùn. bộ dữ liệu nhập khẩu load_digits chữ số = load_digits () X, y = chữ số. dữ liệu, chữ số. nhắm mục tiêu từ sklearn. svm nhập khẩu SVC từ sklearn. cross_validation nhập khẩu cross_val_score% timeit single_core_learning = cross_val_score (SVC (), X, y, cv = 20, n_jobs = 1) Out [1]: 1 vòng lặp, tốt nhất của 3: 17. 9 s mỗi vòng
Sau khi kiểm tra này, bạn cần phải kích hoạt song song đa lõi và thời gian kết quả sử dụng các lệnh sau:
% timeit multi_core_learning = cross_val_score (SVC (), X, y, cv = 20, n_jobs = -1) Out [2]: 1 vòng, tốt nhất của 3: 11. 7 giây cho mỗi vòng lặp
Ví dụ máy minh họa lợi thế tích cực bằng cách sử dụng chế biến đa lõi, mặc dù sử dụng một bộ dữ liệu nhỏ mà Python dành phần lớn thời gian bắt đầu bàn giao tiếp và chạy một phần của mã trong mỗi một. Chi phí này, một vài giây, vẫn còn đáng kể do tổng số lần thực thi kéo dài trong một vài giây. Chỉ cần tưởng tượng điều gì sẽ xảy ra nếu bạn làm việc với bộ dữ liệu lớn hơn - thời gian thực hiện của bạn có thể dễ dàng bị cắt giảm bởi hai hoặc ba lần.
Mặc dù mã hoạt động tốt với IPython, đặt nó xuống trong một kịch bản và yêu cầu Python chạy nó trong một giao diện điều khiển hoặc sử dụng một IDE có thể gây ra lỗi vì các hoạt động nội bộ của một công việc đa lõi. Giải pháp là đặt tất cả các mã dưới một câu lệnh if, kiểm tra xem chương trình có bắt đầu trực tiếp và không được gọi sau đó. Dưới đây là một ví dụ kịch bản:
từ sklearn. số liệu nhập khẩu load_digits từ sklearn. svm nhập khẩu SVC từ sklearn. cross_validation nhập khẩu chéo_val_score nếu __name__ == '__main__': digits = load_digits () X, y = chữ số. dữ liệu, chữ số. target multi_core_learning = cross_val_score (SVC (), X, y, cv = 20, n_jobs = -1)