Menu
CoddyTech

Representar las clases

Parte de la sección Datos y gráficos del Journey de Machine Learning de Coddy. Lección 55 de 60.

¿Forman las clases nubes separadas? Dibuja un diagrama de dispersión por clase, cada uno con el nombre obtenido de target_names:

Flores de iris según la longitud y el ancho del sépalo, un color por especie: setosa forma su propia nube en la parte superior izquierda, mientras que versicolor y virginica se solapan en el centro y a la derecha

El código que hay detrás:

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()

Cada llamada obtiene su propio color, y label=iris.target_names[i] convierte 0, 1 y 2 en nombres para la leyenda.

Setosa se distingue; versicolor y virginica se solapan. Donde se solapan las nubes es donde un modelo cometerá errores.

challenge icon

Desafío

Intermedio

¿Forman las muestras malignas y benignas grupos separados? El gráfico de un compañero no permite saberlo: representa todos los datos de load_breast_cancer con un único diagrama de dispersión, de un solo color.

  1. Sustituye ese diagrama de dispersión por uno para cada clase: mean radius en el eje horizontal y mean concave points en el vertical.
  2. Etiqueta cada uno con el nombre de su clase de target_names.

Conserva las líneas ya preparadas. El tuyo debería parecerse a este, que se ha dibujado a partir de otras dos mediciones:

Diagrama de dispersión de muestras de tejido mamario según la textura media y la suavidad media: malignas en azul y benignas en naranja, con una leyenda que indica ambas clases

Tu programa no imprime nada: Coddy comprueba el gráfico y lo describe.

Pruébalo tú mismo

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

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

# No cambies la línea de abajo
fig, ax = plt.subplots()

# Corrige el código aquí
ax.scatter(df["mean radius"], df["mean concave points"])

# No cambies las líneas de abajo
ax.set_title("Cells by Diagnosis")
ax.set_xlabel("mean radius")
ax.set_ylabel("mean concave points")
ax.legend()
plt.show()
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Datos y gráficos

Practica por tu cuenta: Compilador de Python online