Introduction à l'apprentissage automatique: TP5 - Exercice 3


Prédiction de la qualité de vins

Le dataset suivant:

https://www.openml.org/d/40691

fournit la description de 1599 vins rouges: 12 mesures physico-chimiques ainsi qu'un critère qualitatif donné comme une note entre 3 et 8 (plus haute est la note, meilleur est le vin).

Remarquez que les 12 caractéristiques doivent être normalisées.

La cellule suivante charge les données, construit des bases d'apprentissage et de test, et normalise les caractéristiques.

In [ ]:
from sklearn import datasets, metrics, neural_network, svm, model_selection, preprocessing
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline 

# chargement des données
X_wine, y_wine = datasets.fetch_openml('wine-quality-red', return_X_y=True)

n_samples = len(X_wine)
print("nombre total d'observations (apprentissage + test): %d" % n_samples)

n_features = len(X_wine[0])
print("nombre de caractéristiques par observation: %d" % n_features)

X_train, X_test, y_train, y_test = model_selection.train_test_split(X_wine, y_wine, test_size=0.3, random_state=1)

print("nombre d'observations dans la base d'apprentissage: %d" %len(X_train))
print("nombre d'observations dans la base de test: %d" %len(X_test))

print("\n Cinq premières observations de X_train:")
print(X_train[:5,:])
print("\n et classes associées:")
print(y_train[:5])

# normalisation:
X_train_n = preprocessing.StandardScaler().fit_transform(X_train)
X_test_n = preprocessing.StandardScaler().fit(X_train).transform(X_test)

Deux remarques:

  • Certaines caractéristiques semblent corrélées (on pourrait le vérifier en traçant des graphiques et en calculant des coefficients de corrélation comme dans le cours d'analyse de données): il serait sans doute pertinent d'essayer de réduire la dimensionnalité des observations.

  • Nous allons envisager ce problème comme un problème de classification à 6 classes (les notes de 3 à 8). Néanmoins, il ne semblerait pas absurde de l'envisager comme un problème de régression.


Proposez des prédicteurs de la qualité en fonction des 12 mesures physico-chimiques. Vous explorerez les machines à vecteurs supports et les perceptrons multicouches, dont vous fixerez les hyperparamètres par grid search et validation croisée.


Comparez vos résultats à ceux reportés ici: https://www.openml.org/t/146217 (en vous demandant si les valeurs sont bien comparables)

In [ ]:
# votre code ici:
In [ ]: