Les outils d'analyse : pandas et scikit-learn

L'outillage d'une analyse en Python : carnet Jupyter, NumPy et pandas pour le tableau, scikit-learn et son contrat fit, transform, predict, score, découpage du jeu, pipeline ; R, Orange et KNIME seulement situés.

  • 26 cartes
  • 3 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier

Quelques cartes du deck

  • NumPy : de quoi s'agit-il ?

    Voir la réponse

    Bibliothèque Python de tableaux numériques à plusieurs dimensions, dont les opérations s'appliquent à tous les éléments d'un coup.

    Les calculs sont vectorisés et rapides, bien plus qu'une boucle Python. Presque tout l'écosystème, pandas et scikit-learn compris, repose dessus.

  • Le jeu des iris compte 150 lignes et 4 variables. Que vaut X_test.shape après ce code ?

    ```python
    from sklearn.datasets import load_iris
    from sklearn.model_selection import train_test_split

    X, y = load_iris(return_X_y=True)
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
    `

    • (30, 4)
    • (120, 4)
    • (30, 150)
    • (4, 30)
    Voir la réponse

    (30, 4)

    test_size=0.2 garde 20 % de 150 lignes pour le test, soit 30 ; les 4 variables restent. (120, 4) est la forme de X_train.

  • Un modèle scikit-learn apprend avec …(X, y), prédit avec …(X) et se note avec …(X, y).

    Voir la réponse

    Un modèle scikit-learn apprend avec fit(X, y), prédit avec predict(X) et se note avec score(X, y).

    Ce contrat est commun à tous les estimateurs. Appeler predict avant fit lève NotFittedError : le modèle n'a encore rien appris.

  • pandas : de quoi s'agit-il ?

    Voir la réponse

    Bibliothèque Python de tables étiquetées : lire un CSV, filtrer, regrouper, joindre et nettoyer des données en colonnes nommées.

    Son objet central est le DataFrame. Chaque colonne est une Series ; df.head() montre cinq lignes, df.describe() résume les colonnes numériques.

  • Pourquoi cette ligne, placée avant le découpage, est-elle une faute ?

    ```python
    X = StandardScaler().fit_transform(X)
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
    `

    • fit_transform renvoie un tableau NumPy, que train_test_split ne sait pas découper
    • La moyenne et l'écart-type du jeu de test servent à transformer l'entraînement
    • StandardScaler ne s'applique qu'aux cibles, jamais à la matrice des variables X
    • Le découpage doit toujours précéder la lecture des données, et non suivre leur transformation
    Voir la réponse

    La moyenne et l'écart-type du jeu de test servent à transformer l'entraînement

    Le scaler a calculé ses paramètres sur toutes les lignes, test compris : le jeu de test n'est plus vierge. Réparation : ajuster le scaler sur X_train seul, puis transform sur X_test, ou tout mettre dans un Pipeline.