Exercices Machine Learning Features polynomiales avec PolynomialFeatures
🎉

Bravo!

Avancé 🧠 Fondamentaux 30 XP 0 personnes ont réussi

Features polynomiales avec PolynomialFeatures

Le prix d'un appartement de 200m2 n'est pas le double de celui d'un 100m2 : la relation n'est pas lineaire. Pour que ta regression lineaire capture ce genre de relations, tu peux creer des features polynomiales : les carres, les produits croises de tes features existantes. Ca augmente la puissance de ton modele sans changer d'algorithme.

PolynomialFeatures crée automatiquement des combinaisons de features :
Avec degree=2 et features [a, b], tu obtiens : [1, a, b, a2, a*b, b2]
Ca permet a un modèle lineaire de capturer des relations non lineaires.

Attention : le nombre de features explose vite. Avec 10 features et degree=2, tu passes a 66 features. Avec degree=3, a 286.

from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(degree=2, include_bias=False)
X_poly = poly.fit_transform(X)
poly.get_feature_names_out() # noms des nouvelles features

Écris une fonction créer_features_poly(X, degree=2) qui prend un array numpy et renvoie :
'X_poly' : les features polynomiales (array)
'nb_features_avant' : nombre de features originales
'nb_features_apres' : nombre de features apres transformation
'noms_features' : liste des noms des nouvelles features

Utilise include_bias=False pour ne pas ajouter la colonne de 1.

Tests (4/4)

Nombre de features augmente
import numpy as np
X = np.array([[1, 2], [3, 4], [5, 6]])
result = créer_features_poly(X, degree=2)
assert result['nb_features_avant'] == 2
assert result['nb_features_apres'] > 2
Degree 2 avec 2 features
import numpy as np
X = np.array([[1, 2], [3, 4]])
result = créer_features_poly(X, degree=2)
assert result['nb_features_apres'] == 5
Noms de features presents
import numpy as np
X = np.array([[1, 2], [3, 4]])
result = créer_features_poly(X, degree=2)
assert len(result['noms_features']) == result['nb_features_apres']
Valeurs correctes
import numpy as np
X = np.array([[2, 3]])
result = créer_features_poly(X, degree=2)
# Doit contenir 2, 3, 4, 6, 9
assert 4.0 in result['X_poly'][0]
assert 9.0 in result['X_poly'][0]

Indices (3 disponibles)

solution.py