Menu
CoddyTech

Rappresentare graficamente le classi

Fa parte della sezione Dati e grafici del percorso Machine Learning di Coddy. Lezione 55 di 60.

Le classi formano gruppi separati? Disegna un grafico a dispersione per ogni classe, ciascuno denominato in base a target_names:

Fiori di iris in base alla lunghezza e alla larghezza del sepalo, un colore per specie: setosa forma un gruppo a sé in alto a sinistra, mentre versicolor e virginica si sovrappongono al centro e a destra

Il codice che lo genera:

df = iris.frame
fig, ax = plt.subplots()
for i in range(3):
    group = df[df["target"] == i]
    ax.scatter(group["sepal length (cm)"], group["sepal width (cm)"], label=iris.target_names[i])
ax.set_title("Iris flowers by sepal size")
ax.set_xlabel("sepal length (cm)")
ax.set_ylabel("sepal width (cm)")
ax.legend()
plt.show()

Ogni chiamata ha un colore proprio e label=iris.target_names[i] trasforma 0, 1 e 2 nei nomi della legenda.

Setosa si distingue; versicolor e virginica si sovrappongono. È nelle zone in cui le nuvole si sovrappongono che un modello commetterà errori.

challenge icon

Sfida

Medio

I campioni maligni e benigni formano gruppi distinti? Il grafico di un compagno di squadra non può dirlo: rappresenta tutti i dati di load_breast_cancer con un unico grafico a dispersione, di un solo colore.

  1. Sostituisci quel grafico a dispersione con uno per classe: mean radius sull'asse orizzontale, mean concave points su quello verticale.
  2. Assegna a ciascuno il nome della classe corrispondente da target_names.

Mantieni le righe già pronte. Il tuo dovrebbe assomigliare a questo, tracciato usando altre due misurazioni:

Grafico a dispersione di campioni di tessuto mammario in base alla texture media e alla levigatezza media, maligni in blu e benigni in arancione, con una legenda che indica entrambe le classi

Il tuo programma non stampa nulla: Coddy controlla il grafico e lo descrive.

Provalo tu

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

cancer = load_breast_cancer(as_frame=True)
df = cancer.frame

# Non modificare la riga seguente
fig, ax = plt.subplots()

# Correggi il codice qui
ax.scatter(df["mean radius"], df["mean concave points"])

# Non modificare le righe seguenti
ax.set_title("Cells by Diagnosis")
ax.set_xlabel("mean radius")
ax.set_ylabel("mean concave points")
ax.legend()
plt.show()
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Dati e grafici

Esercitati da solo: Compilatore Python online