NumPy to podstawowa biblioteka do obliczeń naukowych w języku Python, szeroko stosowana w aplikacjach do uczenia maszynowego. Oto niektóre z typowych funkcji NumPy, które są często używane w uczeniu maszynowym:
1. np.array(): Ta funkcja służy do tworzenia tablic NumPy, które są podstawowymi strukturami danych używanymi w uczeniu maszynowym.
2. np.zeros(), np.ones(), np.random.rand(), np.random.randn(): Te funkcje są używane do tworzenia tablic wypełnionych zerami, jedynekami lub wartościami losowymi, które są często używane do inicjowania parametrów modelu lub generowania danych syntetycznych.
3. np.linspace(), np.logspace(): Te funkcje służą do tworzenia tablic wartości równomiernie rozmieszczonych, co może być przydatne w zadaniach takich jak inżynieria cech lub wizualizacja.
4. np.reshape(), np.transpose(), np.expand_dims(): Funkcje te służą do manipulowania kształtem i wymiarami tablic, co często jest konieczne, gdy praca z modelami uczenia maszynowego.
5. np.concatenate(), np.stack(), np.vstack(), np.hstack(): Te funkcje służą do łączenia wielu tablic wzdłuż różnych osi, co może być przydatne w zadaniach takich jak inżynieria funkcji lub powiększanie danych.
6. np.sum(), np.mean(), np.std(), np.var(): Te funkcje służą do obliczania podstawowych statystyk właściwości tablic, które mogą być przydatne w analizie danych i inżynierii cech.
7. np.dot(), np.matmul(): Funkcje te służą do wykonywania mnożenia macierzy, co jest podstawową operacją w wielu algorytmach uczenia maszynowego.
8. np.linalg.inv(), np.linalg.eig(), np.linalg.svd(): Funkcje te służą do wykonywania operacji algebry liniowej, takich jak inwersja macierzy, rozkład wartości własnych i rozkład wartości osobliwych, które są ważne w uczeniu maszynowym przy zadaniach takich jak redukcja wymiarowości i optymalizacja modelu.
9. np.argmax(), np.argsort(): Te funkcje służą do znajdowania indeksów wartości maksymalnych lub posortowanych w tablicy, co może być przydatne do zadań takich jak klasyfikacja lub ranking .
10. np.where(): Ta funkcja służy do stosowania logiki warunkowej do tablic, co może być przydatne w zadaniach takich jak inżynieria cech lub wstępne przetwarzanie danych.
To tylko kilka przykładów wielu funkcji NumPy, które są powszechnie używane w uczeniu maszynowym. Konkretne użyte funkcje będą zależeć od konkretnego problemu i wymagań używanego modelu uczenia maszynowego.
Cytaty:
[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
czym iloczyn skalarny NumPy różni się od mnożenia macierzy w innych bibliotekach
Kluczowe różnice pomiędzy funkcją `np.dot()` w NumPy a mnożeniem macierzy w innych bibliotekach to:
1. Wymiarowość:
- `np.dot()` może obsługiwać tablice o różnych wymiarach, wykonując różne operacje w oparciu o kształty wejściowe.
- W przypadku tablic 1D funkcja „np.dot()” oblicza iloczyn wewnętrzny.
- Dla tablic 2D, `np.dot()` oblicza mnożenie macierzy.
- W przypadku tablic o wyższych wymiarach funkcja `np.dot()` wykonuje iloczyn sumy na ostatniej osi pierwszego argumentu i przedostatniej osi drugiego argumentu.
2. Wydajność:
- Funkcja „np.dot()” NumPy jest wysoce zoptymalizowana i wykorzystuje pod maską wydajne biblioteki BLAS (podstawowe podprogramy algebry liniowej), dzięki czemu jest bardzo szybka.
- Inne biblioteki mogą nie mieć tego samego poziomu optymalizacji, szczególnie w przypadku dużych macierzy lub tablic wielowymiarowych.
3. Składnia:
- W Pythonie 3.5 i nowszych wersjach operatora `@` można używać do mnożenia macierzy, co jest bardziej intuicyjne i zwięzłe niż wywoływanie `np.dot()`.
- Inne biblioteki mogą mieć własną składnię mnożenia macierzy, która może różnić się od `np.dot()` NumPy.
4. Elastyczność:
- `np.dot()` jest bardziej elastyczna w obsłudze tablic o różnych wymiarach, podczas gdy mnożenie macierzy w innych bibliotekach może mieć bardziej rygorystyczne wymagania dotyczące kształtów wejściowych.
5. Konwencja nazewnictwa:
- Nazwa `np.dot()` może wprowadzać w błąd, ponieważ wykonuje zarówno iloczyn skalarny, jak i mnożenie macierzy, w zależności od kształtów wejściowych.
- Inne biblioteki mogą mieć bardziej opisowe nazwy funkcji, takie jak `matrix_multiply()` lub `matmul()`, aby wyraźnie odróżnić iloczyn skalarny od mnożenia macierzy.
Podsumowując, chociaż podstawowe operacje matematyczne mogą być podobne, funkcja `np.dot()` NumPy zapewnia bardziej elastyczną i wydajną implementację iloczynu skalarnego i mnożenia macierzy w porównaniu z innymi bibliotekami, ale konwencja nazewnictwa może być myląca. Wprowadzenie operatora `@` w Pythonie 3.5 lub nowszym pomaga uczynić mnożenie macierzy bardziej intuicyjnym.
Cytaty:
[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
czy są jakieś scenariusze, w których preferowany jest np.dot zamiast @ lub np.matmul
Tak, istnieją scenariusze, w których preferowany jest `np.dot` zamiast `@` lub `np.matmul`. Oto kilka przypadków, w których bardziej odpowiedni może być `np.dot`:
1. Kompatybilność ze starszymi wersjami Pythona: `np.dot` jest dostępny we wszystkich wersjach NumPy, także starszych. Jeśli potrzebujesz obsługi starszych wersji Pythona, bezpieczniejszym wyborem będzie np.dot.
2. Specyficzne przypadki użycia: `np.dot` może obsłużyć pewne operacje, których nie obsługują `@` i `np.matmul`. Na przykład, jeśli chcesz wykonać iloczyn skalarny wzdłuż określonej osi, `np.dot` poradzi sobie z tym łatwiej.
3. Czytelność i przejrzystość: W niektórych przypadkach użycie `np.dot` może sprawić, że kod będzie bardziej czytelny i łatwiejszy do zrozumienia. Na przykład, jeśli wykonujesz iloczyn kropkowy w złożonym wyrażeniu, użycie `np.dot` może sprawić, że kod będzie bardziej zwięzły i łatwiejszy do zrozumienia.
4. Wydajność: W niektórych przypadkach `np.dot` może być szybszy niż `@` lub `np.matmul` ze względu na sposób, w jaki obsługuje pewne operacje. Jednak generalnie nie jest to poważny problem, chyba że pracujesz z bardzo dużymi zbiorami danych.
5. Starszy kod: Jeśli pracujesz ze starszym kodem, który używa `np.dot`, łatwiej będzie pozostać przy `np.dot`, aby zachować kompatybilność i uniknąć potencjalnych problemów z aktualizacją do nowszych wersji NumPy .
Oto kilka scenariuszy, w których `np.dot` może być preferowany zamiast `@` lub `np.matmul`:
- Kompatybilność ze starszymi wersjami Pythona: Jeśli potrzebujesz obsługi starszych wersji Pythona, bezpieczniejszym wyborem jest `np.dot`.
- Specyficzne przypadki użycia: Jeśli chcesz wykonać iloczyn skalarny wzdłuż określonej osi, `np.dot` poradzi sobie z tym łatwiej.
- Czytelność i przejrzystość: W niektórych przypadkach użycie `np.dot` może sprawić, że kod będzie bardziej czytelny i łatwiejszy do zrozumienia.
- Wydajność: W niektórych przypadkach `np.dot` może być szybszy niż `@` lub `np.matmul` ze względu na sposób, w jaki obsługuje pewne operacje.
- Starszy kod: Jeśli pracujesz ze starszym kodem, który używa `np.dot`, łatwiej będzie pozostać przy `np.dot`, aby zachować kompatybilność i uniknąć potencjalnych problemów z aktualizacją do nowszych wersji NumPy.
Podsumowując, chociaż `@` i `np.matmul` są ogólnie bardziej wydajne i czytelne, istnieją scenariusze, w których `np.dot` może być bardziej odpowiedni.
Cytaty:[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