Préparation des données pour l'apprentissage automatique en Python
Les modèles d'apprentissage automatique apprennent à partir de nombres, et ils apprennent mieux quand les variables ont des échelles similaires. La normalisation et la standardisation remettent les données à l'échelle, et la multiplication de matrices permet aux modèles de combiner de nombreuses variables à la fois.
Le concept en termes simples
Les modèles d'apprentissage automatique apprennent à partir de nombres, et ils apprennent mieux quand les variables ont des échelles similaires. La normalisation et la standardisation remettent les données à l'échelle, et la multiplication de matrices permet aux modèles de combiner de nombreuses variables à la fois.
Mettez les variables à l'échelle avec la normalisation min-max et la standardisation par score z, et multipliez des matrices à la main.
Idées clés
- Des variables aux échelles très différentes laissent les grands nombres dominer le modèle.
- Min-max garde les valeurs entre 0 et 1 ; les scores z conservent la forme mais la centrent sur 0.
- Calculez les valeurs de mise à l'échelle sur les données d'entraînement et réutilisez-les pour les nouvelles données.
- Un produit matriciel A × B exige que le nombre de colonnes de A égale le nombre de lignes de B.
Quand l’utiliser ?
- Comprendre ce qui se passe à l'intérieur des réseaux de neurones et des bibliothèques d'IA.
- Apprendre l'idée avant de l'implémenter dans les défis correspondants.
- Se préparer aux cours d'apprentissage automatique, aux entretiens et aux projets.
À vous de jouer
Faites glisser x5 pour créer une valeur aberrante et comparez la réaction de min-max et du score z. Pointez une case de A·B pour voir quelle ligne et quelle colonne elle utilise.
Code d’exemple
import statistics
heights = [150, 160, 170, 180, 190]
# Min-max scaling squeezes values into the range 0..1.
low, high = min(heights), max(heights)
print("min-max:", [round((h - low) / (high - low), 2) for h in heights])
# Z-score standardization centres values on 0 with a spread of 1.
mean = statistics.mean(heights)
std = statistics.pstdev(heights)
print("z-scores:", [round((h - mean) / std, 2) for h in heights])
# Matrix multiplication: each output is a row of A dotted with a column of B.
A = [[1, 2], [3, 4]]
B = [[5, 6], [7, 8]]
product = [[sum(A[i][k] * B[k][j] for k in range(2)) for j in range(2)] for i in range(2)]
print("A x B:", product)
Résultat attendu
min-max: [0.0, 0.25, 0.5, 0.75, 1.0]
z-scores: [-1.41, -0.71, 0.0, 0.71, 1.41]
A x B: [[19, 22], [43, 50]]
Fonctionnement
La mise à l'échelle min-max ramène la plus petite taille à 0 et la plus grande à 1. Les scores z soustraient la moyenne et divisent par l'écart-type, si bien que les valeurs sont centrées sur 0. Dans le produit matriciel, chaque case est une ligne de A multipliée élément par élément par une colonne de B, puis additionnée.
Modifiez les valeurs et exécutez le programme avec le compilateur Python en ligne CodeUtility, sans installation locale.
Exercices pratiques
Modifiez les entrées et testez les cas limites avant d’utiliser des données plus volumineuses.
- Modifiez les entrées ou les poids et prédisez la sortie avant d'exécuter.
- Affichez les valeurs intermédiaires pour suivre chaque étape du calcul.
- Résolvez les défis liés ci-dessous pour implémenter l'idée vous-même.
S'entraîner avec un défi
Utilisez le contenu de cette leçon pour résoudre un vrai problème. Chaque défi s'exécute dans le navigateur, avec des tests instantanés et une revue par l'IA.
- Multiplication de matrices Multipliez deux matrices, l'opération derrière chaque couche d'un réseau de neurones. Facile
- Normalisation min-max Remettez une variable à l'échelle pour que sa plus petite valeur devienne 0 et sa plus grande 1. Facile
- Standardisation par z-score Centrez une variable en 0 et ramenez son écart-type à 1. Facile