Dois tipos de células
Parte da seção Aprendizado não supervisionado do Journey de Machine Learning da Coddy. Lição 51 de 51.
Um laboratório mediu 569 amostras de tecido, com 30 medidas celulares cada. São muitas para plotar, e nenhum olhar consegue classificá-las:
O diagnóstico de cada amostra, benigno ou maligno, está em um envelope lacrado. As células conseguem se separar em dois tipos sem essa informação?
Reduza as 30 medições com PCA, agrupe o que restou e só então abra o envelope para ver o quão perto as células chegaram.
Desafio
DifícilO programa lê a proporção da variância a manter, 0.7 ou mais; o código inicial prepara um gráfico.
- Escale e, em seguida, mantenha o menor número de componentes que alcance essa proporção. Imprima quantos são e quanta variância eles mantêm.
- Agrupe esses componentes com k-means: k = 2,
n_init=10,random_state=0. - Abra o envelope: para cada cluster, começando pelo maior, imprima os diagnósticos e a maioria. Em seguida, a concordância: a proporção que corresponde à maioria do respectivo cluster.
- Faça um gráfico de dispersão dos dois primeiros componentes por cluster, com os rótulos
mostly benignoumostly malignant; exiba a legenda e mostre o gráfico.
Para as primeiras 300 amostras e 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.877e o gráfico correspondente:
Depois, Coddy descreve o seu.
Experimente você mesmo
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 amostras de tecido, com 30 medidas celulares cada
cancer = load_breast_cancer(as_frame=True)
cells = cancer.data
# O envelope lacrado: benigno ou maligno para cada amostra. Abra-o apenas no final.
diagnosis = pd.Series(cancer.target_names[cancer.target])
# A proporção da variância a manter, 0.7 ou mais
share = float(input())
fig, ax = plt.subplots()
ax.set_title("Cells on Two Components")
ax.set_xlabel("Component 1")
ax.set_ylabel("Component 2")
# Escreva seu código abaixo
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Aprendizado não supervisionado
1Encontrando Grupos
Aprendendo sem RótulosMedindo a SimilaridadeK-Means à MãoK-Means no scikit-learnRevisão: Frequentadores da Academia4Clustering Hierárquico
Mesclando passo a passoModelos aglomerativosDendrogramasRevisão: raças de cães7PCA na prática
Visualizando 64 dimensõesComponentes como padrõesComprimir e reconstruirPCA antes de um modeloRecapitulação: scanner facial10Projeto: Explorando os Dígitos
Observe os DígitosReduza com PCAAgrupe os DígitosDê Nome aos GruposEncontre os Diferentes2Escolhendo k
InérciaO método do cotoveloPontuações de silhuetaEscale antes de agruparRecapitulando: zonas de entrega8Detecção de Anomalias
Encontrando os DiferentõesIsolation ForestLocal Outlier FactorPontuações de AnomaliaRevisão: Monitoramento do Servidor11Desafios finais
Segmentos de comprasMonitoramento de fraudes em cartõesAglomerados de estrelasDois tipos de célulasPratique por conta própria: Compilador de Python online