NumPy och SciPy är kompletterande bibliotek som fungerar bra tillsammans för maskininlärningsuppgifter. Så här kompletterar de varandra:
Numeriska operationer
- NumPy: Tillhandahåller effektiva flerdimensionella arrayobjekt och en samling rutiner för att arbeta med dessa arrayer, inklusive matematisk, logisk, formmanipulation, sortering, val, I/O, diskreta Fourier-transformer, grundläggande linjär algebra, grundläggande statistiska operationer, slumpmässig simulering och mycket mer.- SciPy: Bygger på NumPy och tillhandahåller många användarvänliga och effektiva numeriska rutiner, såsom rutiner för numerisk integration, interpolation, optimering, linjär algebra och statistik.
Maskininlärningsalgoritmer
- NumPy: Tillhandahåller de grundläggande datastrukturer och matematiska funktioner som krävs för att implementera grundläggande maskininlärningsalgoritmer från början, såsom linjär regression, logistisk regression, beslutsträd, etc.- SciPy: Ger mer avancerade algoritmer för maskininlärning och datautvinning, såsom klustring (k-medel, hierarkisk, etc.), klassificering (SVM, slumpmässiga skogar, etc.), regression (rygg, lasso, etc.). ) och dimensionsreduktion (PCA, ICA, etc.).
Dataförbehandling
- NumPy: Användbar för operationer som omformning, indexering och manipulering av arrayer, som är vanliga uppgifter för förbearbetning av data.- SciPy: Tillhandahåller funktioner för att läsa/skriva datafiler, interpolering, signalbehandling och optimering, som också är viktiga för dataförbehandling.
Visualisering
- NumPy: Tillhandahåller de grundläggande datastrukturerna (arrayer) som används av visualiseringsbibliotek som Matplotlib.- SciPy: Tillhandahåller funktioner för att generera plotter, histogram och andra visualiseringar som kan användas för att utforska och förstå data.
Optimering och linjär algebra
- NumPy: Ger effektiva linjära algebraoperationer och optimerade rutiner för numeriska beräkningar.- SciPy: Bygger på NumPys linjära algebramodul och tillhandahåller mer avancerade optimeringsalgoritmer och rutiner för numerisk linjär algebra.
Sammanfattningsvis tillhandahåller NumPy de grundläggande numeriska och array-baserade operationerna, medan SciPy bygger på NumPy och tillhandahåller ett bredare utbud av vetenskapliga och tekniska beräkningsmoduler, inklusive många som är användbara för maskininlärningsuppgifter. Genom att använda dem tillsammans kan du utnyttja styrkorna hos båda biblioteken för att bygga kraftfulla och effektiva maskininlärningsmodeller.
Citat:
[1] https://www.youtube.com/watch?v=gYcrEZW-xek
[2] https://www.slideshare.net/slideshow/numpy-and-scipy-for-data-mining-and-data-analysis-including-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/
hur förbättrar SciPy prestandan för maskininlärningsmodeller jämfört med att bara använda NumPy
SciPy förbättrar prestandan för maskininlärningsmodeller jämfört med att endast använda NumPy på några viktiga sätt:
1. Avancerade algoritmer: SciPy ger tillgång till ett bredare utbud av avancerade numeriska algoritmer och optimeringsrutiner som är mycket optimerade för prestanda. Detta inkluderar saker som glesa matrisoperationer, olinjära lösare, signalbehandlingsfunktioner och specialiserade maskininlärningsalgoritmer som SVM, k-means och PCA. Dessa avancerade algoritmer kan ofta överträffa de mer grundläggande linjära algebraoperationerna som finns tillgängliga enbart i NumPy.
2. Effektiva datastrukturer: SciPy använder mer effektiva datastrukturer, som glesa matriser, som kan ge betydande prestandaförbättringar för vissa typer av maskininlärningsproblem, särskilt de som involverar stora, glesa datamängder.
3. Parallellisering: Även om NumPy i sig inte tillhandahåller direkta parallella implementeringar, kan SciPy dra fördel av parallellitet genom de underliggande biblioteken som den använder, såsom OpenBLAS eller Intel MKL. Detta gör att SciPy kan utnyttja flerkärniga processorer och GPU:er för att påskynda beräkningarna.
4. Specialiserade moduler: SciPy inkluderar specialiserade moduler som `scipy.stats` och `scipy.optimize` som tillhandahåller mycket optimerade implementeringar av vanliga statistiska och optimeringsrutiner som används i maskininlärning, såsom sannolikhetsfördelningar, hypotestest, root hitta och numerisk integration.
5. Ekosystemintegration: SciPy är tätt integrerat med det bredare Python datavetenskapliga ekosystemet, inklusive bibliotek som NumPy, Pandas och Scikit-learn. Detta gör att maskininlärningsmodeller byggda med SciPy sömlöst kan utnyttja funktionaliteten och prestandan hos dessa andra bibliotek.
Sammanfattningsvis, medan NumPy tillhandahåller de grundläggande numeriska operationerna, bygger SciPy på denna grund för att tillhandahålla en mer omfattande uppsättning mycket optimerade rutiner och datastrukturer som avsevärt kan förbättra prestandan för maskininlärningsmodeller, särskilt för mer komplexa eller storskaliga problem. Kombinationen av NumPy och SciPy är ett kraftfullt verktyg för effektiv och högpresterande maskininlärning i Python.
Citat:[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