NumPy — це фундаментальна бібліотека для наукових обчислень на Python, яка широко використовується в програмах машинного навчання. Ось деякі з поширених функцій NumPy, які часто використовуються в машинному навчанні:
1. np.array(): Ця функція використовується для створення масивів NumPy, які є фундаментальними структурами даних, що використовуються в машинному навчанні.
2. np.zeros(), np.ones(), np.random.rand(), np.random.randn(): ці функції використовуються для створення масивів, заповнених нулями, одиницями або випадковими значеннями, які часто використовуються для ініціалізації параметрів моделі або генерації синтетичних даних.
3. np.linspace(), np.logspace(): ці функції використовуються для створення масивів рівномірно розподілених значень, які можуть бути корисними для таких завдань, як розробка функцій або візуалізація.
4. np.reshape(), np.transpose(), np.expand_dims(): ці функції використовуються для керування формою та розмірами масивів, що часто необхідно, коли робота з моделями машинного навчання.
5. np.concatenate(), np.stack(), np.vstack(), np.hstack(): ці функції використовуються для об’єднання кількох масивів уздовж різних осей, що може бути корисним для таких завдань, як розробка функцій або розширення даних.
6. np.sum(), np.mean(), np.std(), np.var(): ці функції використовуються для обчислення основних статистичних властивості масивів, які можуть бути корисними для аналізу даних і розробки функцій.
7. np.dot(), np.matmul(): ці функції використовуються для виконання множення матриці, яке є фундаментальною операцією в багатьох алгоритмах машинного навчання.
8. np.linalg.inv(), np.linalg.eig(), np.linalg.svd(): ці функції використовуються для виконання операцій лінійної алгебри, таких як інверсія матриці, розкладання власних значень і розкладання сингулярного значення, які важливі в машинному навчанні для таких завдань, як зменшення розмірності та оптимізація моделі.
9. np.argmax(), np.argsort(): ці функції використовуються для пошуку індексів максимальних або відсортованих значень у масиві, що може бути корисним для таких завдань, як класифікація чи ранжування .
10. np.where(): Ця функція використовується для застосування умовної логіки до масивів, що може бути корисним для таких завдань, як розробка функцій або попередня обробка даних.
Це лише кілька прикладів багатьох функцій NumPy, які зазвичай використовуються в машинному навчанні. Використовувані конкретні функції залежатимуть від конкретної проблеми та вимог моделі машинного навчання, що використовується.
цитати:
[1] https://madewithml.com/courses/foundations/numpy/
[2] https://faculty.washington.edu/otoomet/machinelearning-py/numpy-and-pandas.html
[3] https://www.youtube.com/watch?v=gnKbAAVUzro
[4] https://www.naukri.com/code360/library/important-numpy-functions-for-ml
[5] https://becominghuman.ai/an-essential-guide-to-numpy-for-machine-learning-in-python-5615e1758301?gi=adb6aadca980
чим скалярний добуток NumPy відрізняється від множення матриць в інших бібліотеках
Ключові відмінності між функцією NumPy `np.dot()` і множенням матриці в інших бібліотеках:
1. Розмірність:
- `np.dot()` може обробляти масиви різних розмірів, виконуючи різні операції на основі вхідних форм.
- Для одновимірних масивів `np.dot()` обчислює скалярний добуток.
- Для 2D-масивів `np.dot()` обчислює множення матриці.
- Для більших розмірних масивів `np.dot()` виконує підсумковий добуток за останньою віссю першого аргументу та передостанньою віссю другого аргументу.
2. Ефективність:
— `np.dot()` NumPy високо оптимізований і використовує ефективні бібліотеки BLAS (підпрограми базової лінійної алгебри) під капотом, що робить його дуже швидким.
- Інші бібліотеки можуть не мати такого ж рівня оптимізації, особливо для великих матриць або масивів великої розмірності.
3. Синтаксис:
- У Python 3.5 і пізніших версіях оператор `@` можна використовувати для множення матриці, що є більш інтуїтивно зрозумілим і лаконічним, ніж виклик `np.dot()`.
- Інші бібліотеки можуть мати власний синтаксис для множення матриць, який може відрізнятися від `np.dot()` NumPy.
4. Гнучкість:
- `np.dot()` є більш гнучким у обробці масивів різних розмірів, тоді як множення матриць в інших бібліотеках може мати більш суворі вимоги до вхідних форм.
5. Угода про найменування:
- Назва `np.dot()` може ввести в оману, оскільки вона виконує як скалярний добуток, так і множення матриці залежно від вхідних форм.
- Інші бібліотеки можуть мати більш описові назви функцій, наприклад `matrix_multiply()` або `matmul()`, щоб чітко розрізняти скалярний добуток і множення матриці.
Таким чином, незважаючи на те, що базові математичні операції можуть бути подібними, функція NumPy `np.dot()` забезпечує більш гнучку та ефективну реалізацію скалярного добутку та множення матриць порівняно з іншими бібліотеками, але угода про іменування може заплутати. Введення оператора @ в Python 3.5+ допомагає зробити множення матриць більш інтуїтивно зрозумілим.
цитати:
[1] https://stackoverflow.com/questions/34142485/difference-between-numpy-dot-and-python-3-5-matrix-multiplication
[2] https://www.w3resource.com/python-exercises/numpy/advanced-numpy-exercise-1.php
[3] https://mkang32.github.io/python/2020/08/30/numpy-matmul.html
[4] https://www.includehelp.com/python/difference-between-numpy-dot-and-inner-methods.aspx
[5] https://numpy.org/doc/stable/reference/generated/numpy.dot.html
чи є сценарії, коли np.dot є кращим перед @ або np.matmul
Так, є сценарії, коли `np.dot` має перевагу над `@` або `np.matmul`. Ось кілька випадків, коли `np.dot` може бути більш придатним:
1. Сумісність зі старішими версіями Python: `np.dot` доступний у всіх версіях NumPy, включаючи старіші. Якщо вам потрібна підтримка старіших версій Python, `np.dot` є безпечнішим вибором.
2. Конкретні випадки використання: `np.dot` може обробляти певні операції, які не виконують `@` і `np.matmul`. Наприклад, якщо вам потрібно виконати скалярний добуток уздовж певної осі, `np.dot` може впоратися з цим легше.
3. Читабельність і чіткість: у деяких випадках використання `np.dot` може зробити код більш читабельним і легшим для розуміння. Наприклад, якщо ви виконуєте скалярний добуток у складному виразі, використання `np.dot` може зробити код більш лаконічним і легшим для дотримання.
4. Продуктивність: у деяких випадках `np.dot` може бути швидшим за `@` або `np.matmul` через те, як він обробляє певні операції. Однак, як правило, це не є серйозною проблемою, якщо ви не працюєте з дуже великими наборами даних.
5. Застарілий код: якщо ви працюєте зі застарілим кодом, який використовує `np.dot`, можливо, буде простіше дотримуватися `np.dot`, щоб підтримувати сумісність і уникнути потенційних проблем із оновленням до нових версій NumPy .
Ось кілька сценаріїв, коли `np.dot` може мати перевагу над `@` або `np.matmul`:
- Сумісність зі старішими версіями Python: якщо вам потрібна підтримка старіших версій Python, `np.dot` є безпечнішим вибором.
- Конкретні випадки використання: якщо вам потрібно виконати скалярний добуток уздовж певної осі, `np.dot` може впоратися з цим легше.
- Читабельність і чіткість: у деяких випадках використання `np.dot` може зробити код більш читабельним і легшим для розуміння.
- Продуктивність: у деяких випадках `np.dot` може бути швидшим за `@` або `np.matmul` через те, як він обробляє певні операції.
- Застарілий код: якщо ви працюєте зі застарілим кодом, який використовує `np.dot`, можливо, буде легше дотримуватися `np.dot`, щоб підтримувати сумісність і уникнути потенційних проблем із оновленням до нових версій NumPy.
Підсумовуючи, хоча `@` і `np.matmul` загалом більш ефективні та читабельні, є сценарії, де `np.dot` може бути більш придатним.
цитати:[1] https://stackoverflow.com/questions/63628004/whether-to-use-numpys-dot-or-matmul-function
[2] https://stackoverflow.com/questions/34142485/difference-between-numpy-dot-and-python-3-5-matrix-multiplication
[3] https://madewithml.com/courses/foundations/numpy/
[4] https://mkang32.github.io/python/2020/08/30/numpy-matmul.html
[5] https://labex.io/tutorials/python-numpy-dot-function-86429