NumPy và SciPy là các thư viện bổ sung phối hợp tốt với nhau cho các tác vụ machine learning. Đây là cách chúng bổ sung cho nhau:
Các phép toán số
- NumPy: Cung cấp các đối tượng mảng đa chiều hiệu quả và một tập hợp các quy trình để làm việc với các mảng này, bao gồm toán học, logic, thao tác hình dạng, sắp xếp, chọn, I/O, biến đổi Fourier rời rạc, đại số tuyến tính cơ bản, cơ bản hoạt động thống kê, mô phỏng ngẫu nhiên và nhiều hơn nữa.- SciPy: Xây dựng trên NumPy và cung cấp nhiều quy trình số thân thiện và hiệu quả với người dùng, chẳng hạn như quy trình tích phân số, nội suy, tối ưu hóa, đại số tuyến tính và thống kê.
Thuật toán học máy
- NumPy: Cung cấp các cấu trúc dữ liệu cơ bản và các hàm toán học cần thiết để triển khai các thuật toán học máy cơ bản từ đầu, chẳng hạn như hồi quy tuyến tính, hồi quy logistic, cây quyết định, v.v.- SciPy: Cung cấp các thuật toán khai thác dữ liệu và học máy nâng cao hơn, chẳng hạn như phân cụm (k-mean, phân cấp, v.v.), phân loại (SVM, rừng ngẫu nhiên, v.v.), hồi quy (sườn, lasso, v.v.). ) và giảm kích thước (PCA, ICA, v.v.).
Tiền xử lý dữ liệu
- NumPy: Hữu ích cho các hoạt động như định hình lại, lập chỉ mục và thao tác với mảng, vốn là các tác vụ tiền xử lý dữ liệu phổ biến.- SciPy: Cung cấp các chức năng đọc/ghi tệp dữ liệu, nội suy, xử lý tín hiệu và tối ưu hóa, những chức năng này cũng rất quan trọng đối với quá trình tiền xử lý dữ liệu.
Trực quan hóa
- NumPy: Cung cấp các cấu trúc dữ liệu cơ bản (mảng) được các thư viện trực quan hóa như Matplotlib sử dụng.- SciPy: Cung cấp các chức năng tạo biểu đồ, biểu đồ và các hình ảnh trực quan khác có thể được sử dụng để khám phá và hiểu dữ liệu.
Tối ưu hóa và Đại số tuyến tính
- NumPy: Cung cấp các phép toán đại số tuyến tính hiệu quả và các quy trình được tối ưu hóa cho các phép tính số.- SciPy: Xây dựng trên mô-đun đại số tuyến tính của NumPy và cung cấp các thuật toán và quy trình tối ưu hóa nâng cao hơn cho đại số tuyến tính số.
Tóm lại, NumPy cung cấp các phép toán cơ bản dựa trên mảng và số, trong khi SciPy xây dựng dựa trên NumPy và cung cấp nhiều mô-đun điện toán khoa học và kỹ thuật hơn, bao gồm nhiều mô-đun hữu ích cho các tác vụ học máy. Việc sử dụng chúng cùng nhau cho phép bạn tận dụng điểm mạnh của cả hai thư viện để xây dựng các mô hình học máy mạnh mẽ và hiệu quả.
Trích dẫn:
[1] https://www.youtube.com/watch?v=gYcrEZW-xek
[2] https://www.slideshare.net/slideshow/numpy-and-scipy-for-data-mining-and-data-analysis-include-ipython-scikits-and-matplotlib/9215295
[3] https://www.linkedin.com/advice/3/what-differences-between-pandas-numpy-scipy-data-manipulation-eyvke
[4] https://www.freelancinggig.com/blog/2018/12/09/what-is-the-difference-between-numpy-and-scipy/
[5] https://data-flair.training/blogs/numpy-vs-scipy/
SciPy nâng cao hiệu suất của các mô hình machine learning như thế nào so với việc chỉ sử dụng NumPy
SciPy nâng cao hiệu suất của các mô hình học máy so với việc chỉ sử dụng NumPy theo một số cách chính:
1. Thuật toán nâng cao: SciPy cung cấp quyền truy cập vào nhiều thuật toán số nâng cao và quy trình tối ưu hóa được tối ưu hóa cao cho hiệu suất. Điều này bao gồm những thứ như phép toán ma trận thưa thớt, bộ giải phi tuyến, hàm xử lý tín hiệu và các thuật toán học máy chuyên dụng như SVM, k-means và PCA. Các thuật toán nâng cao này thường có thể hoạt động tốt hơn các phép toán đại số tuyến tính cơ bản hơn chỉ có trong NumPy.
2. Cấu trúc dữ liệu hiệu quả: SciPy sử dụng các cấu trúc dữ liệu hiệu quả hơn, như ma trận thưa thớt, có thể mang lại những cải tiến đáng kể về hiệu suất cho một số loại vấn đề về máy học, đặc biệt là những vấn đề liên quan đến tập dữ liệu lớn, thưa thớt.
3. Song song: Mặc dù bản thân NumPy không cung cấp các triển khai song song trực tiếp, nhưng SciPy có thể tận dụng tính năng song song thông qua các thư viện cơ bản mà nó sử dụng, chẳng hạn như OpenBLAS hoặc Intel MKL. Điều này cho phép SciPy tận dụng CPU và GPU đa lõi để tăng tốc độ tính toán.
4. Mô-đun chuyên biệt: SciPy bao gồm các mô-đun chuyên dụng như `scipy.stats` và `scipy.optimize` cung cấp khả năng triển khai được tối ưu hóa cao cho các quy trình thống kê và tối ưu hóa phổ biến được sử dụng trong học máy, chẳng hạn như phân phối xác suất, kiểm tra giả thuyết, gốc tìm và tích phân số.
5. Tích hợp hệ sinh thái: SciPy được tích hợp chặt chẽ với hệ sinh thái khoa học dữ liệu Python rộng hơn, bao gồm các thư viện như NumPy, Pandas và Scikit-learn. Điều này cho phép các mô hình máy học được xây dựng bằng SciPy tận dụng liền mạch chức năng và hiệu suất của các thư viện khác này.
Tóm lại, trong khi NumPy cung cấp các phép toán số cơ bản, SciPy xây dựng dựa trên nền tảng này để cung cấp một tập hợp toàn diện hơn các quy trình và cấu trúc dữ liệu được tối ưu hóa cao có thể cải thiện đáng kể hiệu suất của các mô hình học máy, đặc biệt là đối với các vấn đề phức tạp hơn hoặc quy mô lớn hơn. Sự kết hợp giữa NumPy và SciPy là một công cụ mạnh mẽ để học máy hiệu quả và hiệu suất cao trong Python.
Trích dẫn:[1] https://edbennett.github.io/high-performance-python/06-numpy-scipy/index.html
[2] https://www.youtube.com/watch?v=gYcrEZW-xek
[3] https://realpython.com/numpy-tensorflow-performance/
[4] https://data-flair.training/blogs/numpy-vs-scipy/
[5] https://github.com/numpy/numpy/issues/23829