NumPy est une bibliothèque fondamentale pour le calcul scientifique en Python et elle est largement utilisée dans les applications d'apprentissage automatique. Voici quelques-unes des fonctions NumPy courantes fréquemment utilisées dans l’apprentissage automatique :
1. np.array() : Cette fonction est utilisée pour créer des tableaux NumPy, qui sont les structures de données fondamentales utilisées dans l'apprentissage automatique.
2. np.zeros(), np.ones(), np.random.rand(), np.random.randn() : ces fonctions sont utilisées pour créer des tableaux remplis de zéros, de uns ou de valeurs aléatoires, qui sont souvent utilisés pour initialiser les paramètres du modèle ou générer des données synthétiques.
3. np.linspace(), np.logspace() : ces fonctions sont utilisées pour créer des tableaux de valeurs régulièrement espacées, ce qui peut être utile pour des tâches telles que l'ingénierie ou la visualisation de fonctionnalités.
4. np.reshape(), np.transpose(), np.expand_dims() : ces fonctions sont utilisées pour manipuler la forme et les dimensions des tableaux, ce qui est souvent nécessaire lorsque travailler avec des modèles d’apprentissage automatique.
5. np.concatenate(), np.stack(), np.vstack(), np.hstack() : ces fonctions sont utilisées pour combiner plusieurs tableaux selon différents axes, ce qui peut être utile pour des tâches telles que l'ingénierie des fonctionnalités ou l'augmentation des données.
6. np.sum(), np.mean(), np.std(), np.var() : ces fonctions sont utilisées pour calculer des statistiques de base propriétés des tableaux, qui peuvent être utiles pour l’analyse des données et l’ingénierie des fonctionnalités.
7. np.dot(), np.matmul() : ces fonctions sont utilisées pour effectuer une multiplication matricielle, qui est une opération fondamentale dans de nombreux algorithmes d'apprentissage automatique.
8. np.linalg.inv(), np.linalg.eig(), np.linalg.svd() : ces fonctions sont utilisées pour effectuer des opérations d'algèbre linéaire, telles que l'inversion matricielle, la décomposition des valeurs propres et la décomposition des valeurs singulières, qui sont importantes dans l'apprentissage automatique pour des tâches telles que la réduction de dimensionnalité et l'optimisation du modèle.
9. np.argmax(), np.argsort() : Ces fonctions sont utilisées pour trouver les indices des valeurs maximales ou triées dans un tableau, ce qui peut être utile pour des tâches telles que la classification ou le classement. .
10. np.where() : Cette fonction est utilisée pour appliquer une logique conditionnelle aux tableaux, ce qui peut être utile pour des tâches telles que l'ingénierie des fonctionnalités ou le prétraitement des données.
Ce ne sont là que quelques exemples des nombreuses fonctions NumPy couramment utilisées en apprentissage automatique. Les fonctions spécifiques utilisées dépendront du problème particulier et des exigences du modèle d'apprentissage automatique utilisé.
Citations :
[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
en quoi le produit scalaire de NumPy diffère-t-il de la multiplication matricielle dans d'autres bibliothèques
Les principales différences entre la fonction `np.dot()` de NumPy et la multiplication matricielle dans d'autres bibliothèques sont :
1. Dimensionnalité :
- `np.dot()` peut gérer des tableaux de différentes dimensions, effectuant différentes opérations basées sur les formes d'entrée.
- Pour les tableaux 1D, `np.dot()` calcule le produit interne.
- Pour les tableaux 2D, `np.dot()` calcule la multiplication matricielle.
- Pour les tableaux de dimension supérieure, `np.dot()` effectue un produit somme sur le dernier axe du premier argument et l'avant-dernier axe du deuxième argument.
2. Efficacité :
- `np.dot()` de NumPy est hautement optimisé et utilise des bibliothèques BLAS (Basic Linear Algebra Subprograms) efficaces sous le capot, ce qui le rend très rapide.
- D'autres bibliothèques peuvent ne pas avoir le même niveau d'optimisation, notamment pour les grandes matrices ou les tableaux de grande dimension.
3. Syntaxe :
- Dans Python 3.5 et versions ultérieures, l'opérateur `@` peut être utilisé pour la multiplication matricielle, ce qui est plus intuitif et concis que l'appel de `np.dot()`.
- D'autres bibliothèques peuvent avoir leur propre syntaxe pour la multiplication matricielle, qui peut différer de `np.dot()` de NumPy.
4. Flexibilité :
- `np.dot()` est plus flexible dans la gestion des tableaux de différentes dimensions, alors que la multiplication matricielle dans d'autres bibliothèques peut avoir des exigences plus strictes sur les formes d'entrée.
5. Convention de dénomination :
- Le nom `np.dot()` peut être trompeur, car il effectue à la fois une multiplication de produit scalaire et une multiplication matricielle en fonction des formes d'entrée.
- D'autres bibliothèques peuvent avoir des noms de fonctions plus descriptifs, tels que `matrix_multiply()` ou `matmul()`, pour distinguer clairement entre le produit scalaire et la multiplication matricielle.
En résumé, bien que les opérations mathématiques sous-jacentes puissent être similaires, la fonction `np.dot()` de NumPy fournit une implémentation plus flexible et plus efficace du produit scalaire et de la multiplication matricielle par rapport à d'autres bibliothèques, mais la convention de dénomination peut prêter à confusion. L'introduction de l'opérateur `@` dans Python 3.5+ contribue à rendre la multiplication matricielle plus intuitive.
Citations :
[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
existe-t-il des scénarios dans lesquels np.dot est préféré à @ ou np.matmul
Oui, il existe des scénarios dans lesquels « np.dot » est préféré à « @ » ou « np.matmul ». Voici quelques cas où « np.dot » pourrait être plus approprié :
1. Compatibilité avec les anciennes versions de Python : `np.dot` est disponible dans toutes les versions de NumPy, y compris les plus anciennes. Si vous devez prendre en charge les anciennes versions de Python, « np.dot » est un choix plus sûr.
2. Cas d'utilisation spécifiques : `np.dot` peut gérer certaines opérations que `@` et `np.matmul` ne font pas. Par exemple, si vous devez effectuer un produit scalaire le long d'un axe spécifique, « np.dot » peut gérer cela plus facilement.
3. Lisibilité et clarté : Dans certains cas, l'utilisation de « np.dot » peut rendre le code plus lisible et plus facile à comprendre. Par exemple, si vous effectuez un produit scalaire dans une expression complexe, l'utilisation de « np.dot » peut rendre le code plus concis et plus facile à suivre.
4. Performances : Dans certains cas, `np.dot` peut être plus rapide que `@` ou `np.matmul` en raison de la façon dont il gère certaines opérations. Cependant, ce n’est généralement pas un problème majeur, sauf si vous travaillez avec de très grands ensembles de données.
5. Code hérité : si vous travaillez avec du code hérité qui utilise « np.dot », il peut être plus facile de s'en tenir à « np.dot » pour maintenir la compatibilité et éviter les problèmes potentiels liés à la mise à niveau vers des versions plus récentes de NumPy. .
Voici quelques scénarios dans lesquels « np.dot » pourrait être préféré à « @ » ou « np.matmul » :
- Compatibilité avec les anciennes versions de Python : Si vous devez prendre en charge les anciennes versions de Python, `np.dot` est un choix plus sûr.
- Cas d'utilisation spécifiques : Si vous devez effectuer un produit scalaire le long d'un axe spécifique, `np.dot` peut gérer cela plus facilement.
- Lisibilité et clarté : Dans certains cas, l'utilisation de `np.dot` peut rendre le code plus lisible et plus facile à comprendre.
- Performance : Dans certains cas, `np.dot` peut être plus rapide que `@` ou `np.matmul` en raison de la façon dont il gère certaines opérations.
- Code hérité : si vous travaillez avec du code hérité qui utilise `np.dot`, il peut être plus facile de s'en tenir à `np.dot` pour maintenir la compatibilité et éviter les problèmes potentiels liés à la mise à niveau vers des versions plus récentes de NumPy.
En résumé, bien que `@` et `np.matmul` soient généralement plus efficaces et plus lisibles, il existe des scénarios dans lesquels `np.dot` pourrait être plus approprié.
Citations :[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