Vecteurs Python, matrices et tableaux avec Numpy

Vecteurs Python, matrices et tableaux avec Numpy
Dans cette leçon, nous examinerons quelques conseils et astuces soignés pour jouer avec des vecteurs, des matrices et des tableaux à l'aide de la bibliothèque Numpy à Python. Cette leçon est un très bon point de départ si vous vous lancez dans la science des données et avez besoin d'un aperçu mathématique d'introduction de ces composants et de la façon dont nous pouvons jouer avec eux en utilisant Numpy dans le code.

La bibliothèque Numpy nous permet d'effectuer diverses opérations qui doivent être effectuées sur des structures de données souvent utilisées dans l'apprentissage automatique et la science des données comme les vecteurs, les matrices et les tableaux. Nous ne montrerons que les opérations les plus courantes avec Numpy qui sont utilisées dans de nombreux pipelines d'apprentissage automatique. Enfin, veuillez noter que Numpy n'est qu'un moyen d'effectuer les opérations, donc les opérations mathématiques que nous montrons sont l'objectif principal de cette leçon et non le package Numpy lui-même. Commençons.

Qu'est-ce qu'un vecteur?

Selon Google, un vecteur est une quantité ayant une direction et une ampleur, en particulier pour déterminer la position d'un point dans l'espace par rapport à un autre.

Les vecteurs sont très importants dans l'apprentissage automatique car ils décrivent non seulement l'ampleur mais aussi la direction des caractéristiques. Nous pouvons créer un vecteur en Numpy avec l'extrait de code suivant:

Importer Numpy comme NP
row_vector = np.Array ([1,2,3])
print (row_vector)

Dans l'extrait de code ci-dessus, nous avons créé un vecteur de ligne. Nous pouvons également créer un vecteur de colonne comme:

Importer Numpy comme NP
col_vector = np.Array ([[1], [2], [3]])
print (col_vector)

Faire une matrice

Une matrice peut être simplement comprise comme un tableau bidimensionnel. Nous pouvons faire une matrice avec Numpy en faisant un tableau multidimensionnel:

matrice = np.Array ([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
Imprimer (matrice)

Bien que la matrice soit exactement similaire au tableau multidimensionnel, La structure de données de la matrice n'est pas recommandée Pour deux raisons:

  1. Le tableau est la norme en ce qui concerne le package Numpy
  2. La plupart des opérations avec des tableaux de retour Numpy et non une matrice

Utilisation d'une matrice clairsemée

Pour rappeler, une matrice clairsemée est celle dans laquelle la plupart des articles sont nuls. Maintenant, un scénario commun dans le traitement des données et l'apprentissage automatique consiste à traiter les matrices dans lesquelles la plupart des éléments sont nuls. Par exemple, considérez une matrice dont les lignes décrivent chaque vidéo sur YouTube et les colonnes représentent chaque utilisateur enregistré. Chaque valeur représente si l'utilisateur a regardé une vidéo ou non. Bien sûr, la majorité des valeurs de cette matrice seront nulles. Le avantage avec une matrice clairsemée est qu'il ne stocke pas les valeurs nulles. Il en résulte également un énorme avantage de calcul et une optimisation du stockage.

Créons ici une matrice d'étincelle:

de Scipy Import clairsemé
original_matrix = np.Array ([[1, 0, 3], [0, 0, 6], [7, 0, 0]])
SPARSE_MATRIX = SPARSE.csr_matrix (original_matrix)
Print (SPARSE_MATRIX)

Pour comprendre comment le code fonctionne, nous examinerons la sortie ici:

Dans le code ci-dessus, nous avons utilisé la fonction d'un Numpy pour créer un Ligne clairsemée comprimée matrice où les éléments non nuls sont représentés à l'aide des index basés sur zéro. Il existe différents types de matrice clairsemée, comme:

  • Colonne clairsemée comprimée
  • Liste des listes
  • Dictionnaire des clés

Nous ne plongerons pas ici dans d'autres matrices clairsemées, mais nous savons que chacun de leurs est l'utilisation est spécifique et que personne ne peut être qualifié de «meilleur».

Appliquer des opérations à tous les éléments vectoriels

C'est un scénario commun lorsque nous devons appliquer une opération commune à plusieurs éléments vectoriels. Cela peut être fait en définissant un lambda puis en vectorisant. Voyons un extrait de code pour le même:

matrice = np.déployer([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
Mul_5 = Lambda X: X * 5
vectorisé_mul_5 = np.Vectorize (MUL_5)
Vectrized_Mul_5 (matrice)

Pour comprendre comment le code fonctionne, nous examinerons la sortie ici:

Dans l'extrait de code ci-dessus, nous avons utilisé une fonction Vectrize qui fait partie de la bibliothèque Numpy, pour transformer une définition de lambda simple en une fonction qui peut traiter chaque élément du vecteur. Il est important de noter que la vectorisation est Juste une boucle sur les éléments Et cela n'a aucun effet sur les performances du programme. Numpy permet également diffusion, Ce qui signifie qu'au lieu du code complexe ci-dessus, nous aurions pu simplement faire:

matrice * 5

Et le résultat aurait été exactement le même. Je voulais d'abord montrer la partie complexe, sinon vous auriez sauté la section!

Moyenne, variance et écart-type

Avec Numpy, il est facile d'effectuer des opérations liées aux statistiques descriptives sur les vecteurs. La moyenne d'un vecteur peut être calculée comme:

NP.Moyenne (matrice)

La variance d'un vecteur peut être calculée comme:

NP.var (matrice)

L'écart type d'un vecteur peut être calculé comme:

NP.MST (matrice)

La sortie des commandes ci-dessus sur la matrice donnée est donnée ici:

Transposer une matrice

La transformation est une opération très courante dont vous entendrez chaque fois que vous êtes entouré de matrices. La transformation n'est qu'un moyen d'échanger des valeurs de colonne et de ligne d'une matrice. Veuillez noter qu'un Le vecteur ne peut pas être transposé Comme un vecteur n'est qu'une collection de valeurs sans que ces valeurs soient classées en lignes et colonnes. Veuillez noter que la conversion d'un vecteur de ligne en un vecteur de colonne ne transforme pas (basé sur les définitions de l'algèbre linéaire, qui est en dehors de la portée de cette leçon).

Pour l'instant, nous trouverons la paix juste en transformant une matrice. Il est très simple d'accéder à la transposition d'une matrice avec Numpy:

matrice.T

La sortie de la commande ci-dessus sur la matrice donnée est donnée ici:

La même opération peut être effectuée sur un vecteur de ligne pour le convertir en un vecteur de colonne.

Aplatir une matrice

Nous pouvons convertir une matrice en un tableau unidimensionnel si nous souhaitons traiter ses éléments de manière linéaire. Cela peut être fait avec l'extrait de code suivant:

matrice.aplatir()

La sortie de la commande ci-dessus sur la matrice donnée est donnée ici:

Notez que la matrice aplatie est un tableau unidimensionnel, simplement linéaire à la mode.

Calculer les valeurs propres et les vecteurs propres

Les vecteurs propres sont très couramment utilisés dans les packages d'apprentissage automatique. Ainsi, lorsqu'une fonction de transformation linéaire est présentée comme une matrice, alors X, les vecteurs propres sont les vecteurs qui ne changent qu'à l'échelle du vecteur mais pas sa direction. On peut dire ça:

Xv = γv

Ici, x est la matrice carrée et γ contient les valeurs propres. Aussi, V contient les vecteurs propres. Avec Numpy, il est facile de calculer les valeurs propres et les vecteurs propres. Voici l'extrait de code où nous montrons la même chose:

évalue, les résecteurs = np.linalg.eig (matrice)

La sortie de la commande ci-dessus sur la matrice donnée est donnée ici:

Dot Produits des vecteurs

Les produits DOT des vecteurs sont un moyen de multiplier 2 vecteurs. Il vous parle de Quelle part des vecteurs sont dans la même direction, Contrairement au produit croisé qui vous indique le contraire, à quel point les vecteurs sont peu dans la même direction (appelés orthogonaux). Nous pouvons calculer le produit DOT de deux vecteurs comme indiqué dans l'extrait de code ici:

a = np.Array ([3, 5, 6])
b = np.Array ([23, 15, 1])
NP.point (a, b)

La sortie de la commande ci-dessus sur les tableaux donnés est donné ici:

Ajout, soustraire et multiplier les matrices

L'ajout et la soustraction de plusieurs matrices est un fonctionnement assez simple dans les matrices. Il y a deux façons dont cela peut être fait. Regardons l'extrait de code pour effectuer ces opérations. Dans le but de garder cela simple, nous utiliserons deux fois la même matrice:

NP.ajouter (matrice, matrice)

Ensuite, deux matrices peuvent être soustraites en tant que:

NP.soustraire (matrice, matrice)

La sortie de la commande ci-dessus sur la matrice donnée est donnée ici:

Comme prévu, chacun des éléments de la matrice est ajouté / soustrait avec l'élément correspondant. La multiplication d'une matrice est similaire à la recherche du produit DOT comme nous l'avons fait plus tôt:

NP.point (matrice, matrice)

Le code ci-dessus trouvera la véritable valeur de multiplication de deux matrices, données comme:

matrice * matrice

La sortie de la commande ci-dessus sur la matrice donnée est donnée ici:

Conclusion

Dans cette leçon, nous avons effectué de nombreuses opérations mathématiques liées aux vecteurs, matrices et tableaux qui sont couramment utilisés le traitement des données, les statistiques descriptives et la science des données. C'était une leçon rapide ne couvrant que les sections les plus courantes et les plus importantes de la grande variété de concepts, mais ces opérations devraient donner une très bonne idée de ce que toutes les opérations peuvent être effectuées tout en traitant de ces structures de données.

Veuillez partager librement vos commentaires sur la leçon sur Twitter avec @LinuxHint et @sbmaggarwal (c'est moi!).