NumPy ir Python zinātniskās skaitļošanas pamata bibliotēka, un to plaši izmanto mašīnmācības lietojumprogrammās. Šeit ir dažas no izplatītākajām NumPy funkcijām, kuras bieži izmanto mašīnmācībā.
1. np.array(): šī funkcija tiek izmantota, lai izveidotu NumPy masīvus, kas ir mašīnmācībā izmantotās pamata datu struktūras.
2. np.zeros(), np.ones(), np.random.rand(), np.random.randn(): šīs funkcijas tiek izmantotas. lai izveidotu masīvus, kas piepildīti ar nullēm, vieniniekiem vai nejaušām vērtībām, ko bieži izmanto modeļa parametru inicializācijai vai sintētisko datu ģenerēšanai.
3. np.linspace(), np.logspace(): šīs funkcijas tiek izmantotas, lai izveidotu vienmērīgi izvietotu vērtību masīvus, kas var būt noderīgi tādos uzdevumos kā līdzekļu projektēšana vai vizualizācija.
4. np.reshape(), np.transpose(), np.expand_dims(): šīs funkcijas tiek izmantotas, lai manipulētu ar masīvu formu un izmēriem, kas bieži ir nepieciešamas, ja darbs ar mašīnmācīšanās modeļiem.
5. np.concatenate(), np.stack(), np.vstack(), np.hstack(): šīs funkcijas tiek izmantotas, lai apvienotu vairākus masīvus. pa dažādām asīm, kas var būt noderīgi tādiem uzdevumiem kā funkciju izstrāde vai datu palielināšana.
6. np.sum(), np.mean(), np.std(), np.var(): šīs funkcijas tiek izmantotas pamata statistikas aprēķināšanai. masīvu īpašības, kas var būt noderīgas datu analīzei un funkciju inženierijai.
7. np.dot(), np.matmul(): šīs funkcijas tiek izmantotas, lai veiktu matricas reizināšanu, kas ir pamatdarbība daudzos mašīnmācīšanās algoritmos.
8. np.linalg.inv(), np.linalg.eig(), np.linalg.svd(): šīs funkcijas tiek izmantotas, lai veiktu lineāras algebras darbības, piemēram, matricas inversija, īpašvērtību sadalīšana un vienskaitļa vērtību sadalīšana, kas ir svarīgas mašīnmācībā tādiem uzdevumiem kā dimensiju samazināšana un modeļa optimizācija.
9. np.argmax(), np.argsort(): šīs funkcijas tiek izmantotas, lai masīvā atrastu maksimālo vai sakārtoto vērtību indeksus, kas var būt noderīgi tādiem uzdevumiem kā klasifikācija vai ranžēšana. .
10. np.where(): šī funkcija tiek izmantota, lai masīviem lietotu nosacījumu loģiku, kas var būt noderīga tādos uzdevumos kā līdzekļu izstrāde vai datu pirmapstrāde.
Šie ir tikai daži piemēri no daudzajām NumPy funkcijām, kuras parasti izmanto mašīnmācībā. Konkrētās izmantotās funkcijas būs atkarīgas no konkrētās problēmas un izmantotā mašīnmācīšanās modeļa prasībām.
Citāts:
[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
kā NumPy punktu reizinājums atšķiras no matricas reizināšanas citās bibliotēkās
Galvenās atšķirības starp NumPy funkciju "np.dot()" un matricas reizināšanu citās bibliotēkās ir:
1. Dimensionalitāte:
- `np.dot()` var apstrādāt dažādu izmēru masīvus, veicot dažādas darbības, pamatojoties uz ievades formām.
- 1D masīviem “np.dot()” aprēķina iekšējo reizinājumu.
- 2D masīviem “np.dot()” aprēķina matricas reizināšanu.
- Augstāku dimensiju masīviem `np.dot()` veic summas reizinājumu pār pirmā argumenta pēdējo asi un otrā argumenta asi no otrās līdz pēdējai.
2. Efektivitāte:
- NumPy `np.dot()` ir ļoti optimizēta un zem pārsega izmanto efektīvas BLAS (Basic Linear Algebra Subprograms) bibliotēkas, padarot to ļoti ātru.
- Citām bibliotēkām var nebūt tāds pats optimizācijas līmenis, īpaši lielām matricām vai augstas dimensijas masīviem.
3. Sintakse:
- Python 3.5 un jaunākās versijās operatoru @ var izmantot matricas reizināšanai, kas ir intuitīvāk un kodolīgāk nekā np.dot() izsaukšana.
- Citām bibliotēkām var būt sava sintakse matricas reizināšanai, kas var atšķirties no NumPy `np.dot()`.
4. Elastīgums:
- "np.dot()" ir elastīgāks dažādu izmēru masīvu apstrādē, savukārt matricas reizināšanai citās bibliotēkās var būt stingrākas prasības attiecībā uz ievades formām.
5. Nosaukšanas konvencija:
- Nosaukums "np.dot()" var būt maldinošs, jo atkarībā no ievades formām tas veic gan punktu reizinājumu, gan matricas reizināšanu.
- Citām bibliotēkām var būt aprakstošāki funkciju nosaukumi, piemēram, "matrix_multiply()" vai "matmul()", lai skaidri atšķirtu punktu reizinājumu un matricas reizināšanu.
Rezumējot, lai gan pamatā esošās matemātiskās darbības var būt līdzīgas, NumPy funkcija `np.dot() nodrošina elastīgāku un efektīvāku punktu reizinājuma un matricas reizināšanas ieviešanu, salīdzinot ar citām bibliotēkām, taču nosaukumi var būt mulsinoši. Operatora @ ieviešana Python 3.5+ versijā palīdz padarīt matricas reizināšanu intuitīvāku.
Citāts:
[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
vai ir kādi scenāriji, kuros priekšroka tiek dota np.dot, nevis @ vai np.matmul
Jā, ir gadījumi, kad priekšroka tiek dota “np.dot”, nevis “@” vai “np.matmul”. Tālāk ir norādīti daži gadījumi, kad “np.dot” varētu būt piemērotāks:
1. Saderība ar vecākām Python versijām: `np.dot` ir pieejams visās NumPy versijās, tostarp vecākajās. Ja jums ir jāatbalsta vecākas Python versijas, `np.dot` ir drošāka izvēle.
2. Konkrēti lietošanas gadījumi: “np.dot” var apstrādāt noteiktas darbības, kuras “@” un “np.matmul” neveic. Piemēram, ja jums ir jāveido punktu reizinājums pa noteiktu asi, `np.dot' to var izdarīt vienkāršāk.
3. Lasāmība un skaidrība: dažos gadījumos “np.dot” izmantošana var padarīt kodu lasāmāku un vieglāk saprotamu. Piemēram, ja veicat punktu reizinājumu sarežģītā izteiksmē, izmantojot “np.dot”, kods var būt kodolīgāks un vieglāk sekojams.
4. Veiktspēja: dažos gadījumos “np.dot” var būt ātrāks par “@” vai “np.matmul”, jo tas apstrādā noteiktas darbības. Tomēr tas parasti nerada nopietnas bažas, ja vien jūs nestrādājat ar ļoti lielām datu kopām.
5. Mantotais kods: ja strādājat ar mantoto kodu, kurā tiek izmantots `np.dot`, iespējams, ir vieglāk pieturēties pie `np.dot`, lai saglabātu saderību un izvairītos no iespējamām problēmām, jauninot uz jaunākām NumPy versijām. .
Tālāk ir norādīti daži scenāriji, kuros “np.dot” varētu tikt dota priekšroka, nevis “@” vai “np.matmul”.
- Saderība ar vecākām Python versijām: ja jums ir jāatbalsta vecākas Python versijas, `np.dot` ir drošāka izvēle.
- Konkrēti lietošanas gadījumi: ja jums ir jāveido punktu produkts pa noteiktu asi, `np.dot' to var apstrādāt vienkāršāk.
- Lasāmība un skaidrība: dažos gadījumos, izmantojot “np.dot”, kods var kļūt lasāmāks un vieglāk saprotams.
- Veiktspēja: dažos gadījumos `np.dot` var būt ātrāks par `@` vai `np.matmul`, jo tas apstrādā noteiktas darbības.
- Mantotais kods: ja strādājat ar mantoto kodu, kurā tiek izmantots `np.dot', iespējams, ir vieglāk izmantot np.dot, lai saglabātu saderību un izvairītos no iespējamām problēmām, jauninot uz jaunākām NumPy versijām.
Rezumējot, lai gan “@” un “np.matmul” parasti ir efektīvāki un lasāmāki, ir gadījumi, kad “np.dot” varētu būt piemērotāks.
Citāts:[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