Menu
CoddyTech

Las dos mejores características

Parte de la sección Estadística para ML del Journey de Machine Learning de Coddy. Lección 59 de 64.

Aquí está la imagen que prometía este capítulo: las dos características medias más potentes en un único diagrama de dispersión, un color por clase.

Muestras de tejido según la media de los puntos cóncavos en el eje horizontal y la media del perímetro en el eje vertical: las muestras benignas se agrupan en la parte inferior izquierda, las malignas se extienden hacia arriba y a la derecha, y ambas nubes se encuentran en una franja estrecha

Las muestras benignas se concentran en la parte inferior izquierda, y las malignas se extienden hacia arriba y a la derecha. Donde se encuentran las nubes, un modelo que use este par cometerá sus errores.

Una comprobación más: ¿son las dos casi copias?

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

Esto imprime 0.85: relacionadas, no copias. Con 0.99, la segunda característica repetiría la primera y no aportaría casi nada nuevo.

challenge icon

Desafío

Intermedio

Las características error miden cuánto varió una medición entre las células de una muestra. ¿Pueden las dos más fuertes distinguir las clases? El código inicial las clasifica en first y second; label(ax) nombra el gráfico.

  1. Imprime r between them: y su r, con 2 decimales.
  2. Dibuja un diagrama de dispersión por clase, con first en el eje horizontal y etiquetado con el nombre de la clase.
  3. Llama a label(ax), añade una leyenda y muéstralo.

Así, para el par worst más fuerte (r 0.82):

Un diagrama de dispersión titulado Worst Features, con worst concave points en el eje horizontal y worst perimeter en el vertical; las muestras malignas en azul, arriba y a la derecha, y las benignas en naranja, abajo a la izquierda

Ahora evalúa tu gráfico: ¿hay nubes separadas? Y con tu r, ¿son copias?

Pruébalo tú mismo

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
# Las diez características de error: cuánto varió cada medición entre las células de una muestra
X = cancer.data[cancer.feature_names[10:20]]

# Ordenadas por intensidad: first y second son las dos más fuertes
strength = np.abs(X.corrwith(y)).sort_values(ascending=False)
first = strength.index[0]
second = strength.index[1]


# Establece el título del gráfico y asigna a los ejes los nombres del par
def label(ax):
    ax.set_title("Error Features")
    ax.set_xlabel(first)
    ax.set_ylabel(second)


# Escribe tu código a continuación
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 Estadística para ML

Practica por tu cuenta: Compilador de Python online