<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 2A.data - Classification, régression, anomalies - énoncé
Le jeu de données Wine Quality Data Set contient 5000 vins décrits par leurs caractéristiques chimiques et évalués par un expert. Peut-on s'approcher de l'expert à l'aide d'un modèle de machine learning.
Step1:  Les données
On peut les récupérer sur github...data_2a.
Step2:  Exercice 1 
Step3:  Exercice 5 
Step4:  Exercice 6 
<ASSISTANT_TASK:>
Python Code:
%matplotlib inline
import matplotlib.pyplot as plt
from jyquickhelper import add_notebook_menu
add_notebook_menu()
Explanation: 2A.data - Classification, régression, anomalies - énoncé
Le jeu de données Wine Quality Data Set contient 5000 vins décrits par leurs caractéristiques chimiques et évalués par un expert. Peut-on s'approcher de l'expert à l'aide d'un modèle de machine learning.
End of explanation
from ensae_teaching_cs.data import wines_quality
from pandas import read_csv
df = read_csv(wines_quality(local=True, filename=True))
df.head()
Explanation: Les données
On peut les récupérer sur github...data_2a.
End of explanation
from sklearn.metrics import roc_curve, auc
# labels = pipe.steps[1][1].classes_
# y_score = pipe.predict_proba(X_test)
fpr = dict()
tpr = dict()
roc_auc = dict()
# for i, cl in enumerate(labels):
#     fpr[cl], tpr[cl], _ = roc_curve(y_test == cl, y_score[:, i])
#     roc_auc[cl] = auc(fpr[cl], tpr[cl])
# fig, ax = plt.subplots(1, 1, figsize=(8,4))
# for k in roc_auc:
#     ax.plot(fpr[k], tpr[k], label="c%d = %1.2f" % (k, roc_auc[k]))
# ax.legend();
Explanation: Exercice 1 : afficher la distribution des notes
La fonction hist est simple, efficice.
Exercice 2 : séparation train / test
La fonction est tellement utilisée que vous la trouverez rapidement.
Exercice 3 : la variable couleur n'est pas numérique
M... OneHotEncoder.
Exercice 3 : premier classifieur
Vous trouverez aussi tout seul. Quelques fonctions pourront vous aider à évaluer le modèle confusion_matrix, classification_report.
Beaucoup mieux.
Exercice 4 : courbe ROC
Quelques aides...
End of explanation
from sklearn.covariance import EllipticEnvelope
Explanation: Exercice 5 : anomalies
Une anomalie est un point aberrant. Cela revient à dire que sa probabilité qu'un tel événement se reproduise est faible. Un modèle assez connu est EllipticEnvelope. On suppose que si le modèle détecte une anomalie, un modèle de prédiction aura plus de mal à prédire. On réutilise le pipeline précédent en changeant juste la dernière étape.
End of explanation
from sklearn.ensemble import RandomForestRegressor
Explanation: Exercice 6 : régression
La note est numérique, pourquoi ne pas essayer une régression.
End of explanation
<END_TASK>