Dos tipos de células
Parte de la sección Aprendizaje no supervisado del Journey de Machine Learning de Coddy. Lección 51 de 51.
Un laboratorio midió 569 muestras de tejido, con 30 mediciones celulares cada una. Son demasiadas para graficarlas, y ningún ojo puede clasificarlas:
El diagnóstico de cada muestra, benigno o maligno, está dentro de un sobre sellado. ¿Pueden las células clasificarse en dos tipos sin esa información?
Reduce las 30 mediciones con PCA, agrupa lo que queda y solo después abre el sobre para ver qué tan cerca quedaron las células.
Desafío
DifícilEl programa lee la proporción de varianza que se debe conservar, 0.7 o más; el código inicial prepara un gráfico.
- Escala y después conserva el menor número de componentes que alcance esa proporción. Imprime cuántos son y qué proporción conservan.
- Agrupa esos componentes con k-means: k = 2,
n_init=10,random_state=0. - Abre el sobre: por clúster, empezando por el más grande, imprime sus diagnósticos y la categoría mayoritaria. Después, el grado de concordancia: la proporción que coincide con la categoría mayoritaria de su clúster.
- Representa en un diagrama de dispersión los dos primeros componentes de cada clúster, con las etiquetas
mostly benignomostly malignant; añade la leyenda y muestra el gráfico.
Para las primeras 300 muestras y 0.8:
Components for 80% of the variance: 5 (they keep 0.844)
Cluster of 175: 146 benign, 29 malignant, so mostly benign
Cluster of 125: 8 benign, 117 malignant, so mostly malignant
Agreement with the diagnosis: 0.877y su gráfico:
Después, Coddy describe el tuyo.
Pruébalo tú mismo
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_breast_cancer
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
# 569 muestras de tejido, con 30 mediciones celulares cada una
cancer = load_breast_cancer(as_frame=True)
cells = cancer.data
# El sobre sellado: benigno o maligno para cada muestra. Ábrelo solo al final.
diagnosis = pd.Series(cancer.target_names[cancer.target])
# La proporción de la varianza que se debe conservar, 0.7 o más
share = float(input())
fig, ax = plt.subplots()
ax.set_title("Cells on Two Components")
ax.set_xlabel("Component 1")
ax.set_ylabel("Component 2")
# Escribe tu código a continuación
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Aprendizaje no supervisado
1Encontrar grupos
Aprender sin etiquetasMedir la similitudK-Means a manoK-Means en scikit-learnRepaso: miembros del gimnasio7PCA en la práctica
Visualizar 64 dimensionesComponentes como patronesComprimir y reconstruirPCA antes de un modeloRepaso: escáner facial10Proyecto: Explorador de dígitos
Observa los dígitosReduce con PCAAgrupa los dígitosPon nombre a los gruposEncuentra los diferentes2Elegir k
InerciaEl método del codoPuntuaciones de siluetaEscalar antes de agruparRepaso: zonas de entrega8Detección de anomalías
Encontrar los casos atípicosIsolation ForestLocal Outlier FactorPuntuaciones de anomalíaRepaso: vigilancia del servidor11Desafíos finales
Segmentos de comprasVigilancia del fraude con tarjetasCúmulos de estrellasDos tipos de células3Interpretación de los clústeres
Perfilado de clústeresCentros en unidades realesClústeres frente a etiquetas conocidasCuándo falla K-MeansRepaso: cata de téPractica por tu cuenta: Compilador de Python online