NumPy і SciPy — це додаткові бібліотеки, які добре працюють разом із завданнями машинного навчання. Ось як вони доповнюють один одного:
Числові операції
- NumPy: надає ефективні об’єкти багатовимірного масиву та набір процедур для роботи з цими масивами, включаючи математичну, логічну, маніпуляції формою, сортування, вибір, введення/виведення, дискретне перетворення Фур’є, основну лінійну алгебру, основну статистичні операції, випадкове моделювання та багато іншого.- SciPy: базується на NumPy і надає багато зручних і ефективних чисельних процедур, таких як процедури числового інтегрування, інтерполяції, оптимізації, лінійної алгебри та статистики.
Алгоритми машинного навчання
- NumPy: надає фундаментальні структури даних і математичні функції, необхідні для реалізації основних алгоритмів машинного навчання з нуля, таких як лінійна регресія, логістична регресія, дерева рішень тощо.- SciPy: надає вдосконалені алгоритми машинного навчання та інтелектуального аналізу даних, такі як кластеризація (k-середні, ієрархічні тощо), класифікація (SVM, випадкові ліси тощо), регресія (ridge, lasso тощо). ), а також зменшення розмірності (PCA, ICA тощо).
Попередня обробка даних
- NumPy: корисний для таких операцій, як зміна форми, індексування та маніпулювання масивами, які є звичайними завданнями попередньої обробки даних.- SciPy: надає функції для читання/запису файлів даних, інтерполяції, обробки сигналів і оптимізації, які також важливі для попередньої обробки даних.
Візуалізація
- NumPy: надає основні структури даних (масиви), які використовуються бібліотеками візуалізації, такими як Matplotlib.- SciPy: надає функції для створення графіків, гістограм та інших візуалізацій, які можна використовувати для дослідження та розуміння даних.
Оптимізація та лінійна алгебра
- NumPy: забезпечує ефективні операції лінійної алгебри та оптимізовані процедури для чисельних обчислень.- SciPy: базується на модулі лінійної алгебри NumPy і надає вдосконалені алгоритми оптимізації та процедури для чисельної лінійної алгебри.
Таким чином, NumPy забезпечує фундаментальні числові операції та операції на основі масивів, тоді як SciPy будується на основі NumPy і надає ширший спектр науково-технічних обчислювальних модулів, у тому числі багатьох, які корисні для завдань машинного навчання. Їхнє використання разом дозволяє використовувати сильні сторони обох бібліотек для створення потужних і ефективних моделей машинного навчання.
цитати:
[1] https://www.youtube.com/watch?v=gYcrEZW-xek
[2] https://www.slideshare.net/slideshow/numpy-and-scipy-for-data-mining-and-data-analysis-icludes-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 підвищує продуктивність моделей машинного навчання порівняно з використанням лише NumPy
SciPy покращує продуктивність моделей машинного навчання порівняно з використанням лише NumPy кількома ключовими способами:
1. Розширені алгоритми: SciPy надає доступ до ширшого спектру вдосконалених числових алгоритмів і процедур оптимізації, які високо оптимізовані для продуктивності. Це включає такі речі, як операції з розрідженою матрицею, нелінійні розв’язувачі, функції обробки сигналів і спеціалізовані алгоритми машинного навчання, такі як SVM, k-середні та PCA. Ці просунуті алгоритми часто можуть перевершувати базові операції лінійної алгебри, доступні лише в NumPy.
2. Ефективні структури даних: SciPy використовує більш ефективні структури даних, як-от розріджені матриці, які можуть забезпечити значне покращення продуктивності для певних типів проблем машинного навчання, особливо тих, що стосуються великих розріджених наборів даних.
3. Паралелізм: Хоча сам NumPy не забезпечує прямих паралельних реалізацій, SciPy може скористатися перевагами паралелізму через базові бібліотеки, які він використовує, такі як OpenBLAS або Intel MKL. Це дозволяє SciPy використовувати багатоядерні процесори та графічні процесори для прискорення обчислень.
4. Спеціалізовані модулі: SciPy включає спеціалізовані модулі, такі як `scipy.stats` і `scipy.optimize`, які забезпечують високооптимізовану реалізацію звичайних статистичних і оптимізаційних процедур, що використовуються в машинному навчанні, таких як розподіли ймовірностей, перевірка гіпотез, корінь знаходження та чисельне інтегрування.
5. Інтеграція з екосистемою: SciPy тісно інтегрований із ширшою екосистемою науки про дані Python, включаючи такі бібліотеки, як NumPy, Pandas і Scikit-learn. Це дозволяє моделям машинного навчання, створеним за допомогою SciPy, легко використовувати функціональність і продуктивність цих інших бібліотек.
Таким чином, у той час як NumPy забезпечує фундаментальні числові операції, SciPy спирається на цю основу, щоб забезпечити більш повний набір високооптимізованих процедур і структур даних, які можуть значно покращити продуктивність моделей машинного навчання, особливо для складніших або масштабних проблем. Поєднання NumPy і SciPy є потужним інструментом для ефективного та високопродуктивного машинного навчання на Python.
цитати:[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