Menu
CoddyTech

Les deux meilleures caractéristiques

Fait partie de la section Statistiques pour le ML du Journey Machine Learning de Coddy. Leçon 59 sur 64.

Voici l’image promise dans ce chapitre : les deux caractéristiques moyennes les plus discriminantes sur un même nuage de points, une couleur par classe.

Échantillons de tissus selon la moyenne des points concaves sur l’axe horizontal et la moyenne du périmètre sur l’axe vertical : les échantillons bénins se concentrent dans le coin inférieur gauche, tandis que les échantillons malins s’étendent vers le haut et la droite ; les deux nuages se rejoignent dans une bande étroite

Les échantillons bénins se concentrent en bas à gauche, tandis que les échantillons malins s’étendent vers le haut et la droite. Là où les nuages se rejoignent, un modèle utilisant cette paire fera ses erreurs.

Une dernière vérification : les deux sont-elles presque identiques ?

first = strength.index[0]
second = strength.index[1]
print(np.round(df[first].corr(df[second]), 2))

Cela affiche 0.85 : des caractéristiques liées, mais pas identiques. À 0.99, la deuxième caractéristique répéterait la première et n’apporterait presque rien de nouveau.

challenge icon

Défi

Moyen

Les caractéristiques d’error mesurent à quel point une mesure a varié entre les cellules d’un même échantillon. Les deux plus fortes permettent-elles de distinguer les classes ? Le code de départ les classe dans first et second ; label(ax) nomme le graphique.

  1. Affiche r between them: et leur r, avec 2 décimales.
  2. Trace un nuage de points par classe, avec first en abscisse, et indique le nom de chaque classe dans la légende.
  3. Appelle label(ax), ajoute une légende et affiche le graphique.

Comme ceci, pour la paire worst la plus forte (r 0.82) :

Un nuage de points intitulé Caractéristiques worst, avec worst concave points en abscisse et worst perimeter en ordonnée ; les échantillons malins en bleu en haut à droite, les bénins en orange en bas à gauche

Ensuite, évalue ton graphique : les nuages sont-ils séparés ? Et avec ton r, s’agit-il de copies ?

Essayez vous-même

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_breast_cancer

cancer = load_breast_cancer(as_frame=True)
df = cancer.frame
y = cancer.target
# Les dix caractéristiques d’erreur : la variation de chaque mesure entre les cellules d’un même échantillon
X = cancer.data[cancer.feature_names[10:20]]

# Classées par force : first et second sont les deux plus fortes
strength = np.abs(X.corrwith(y)).sort_values(ascending=False)
first = strength.index[0]
second = strength.index[1]


# Définit le titre du graphique et nomme les axes d’après cette paire
def label(ax):
    ax.set_title("Error Features")
    ax.set_xlabel(first)
    ax.set_ylabel(second)


# Écrivez votre code ci-dessous
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Statistiques pour le ML

Entraînez-vous par vous-même : Compilateur Python en ligne