Menu
CoddyTech

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:

Uma grade de 24 amostras por 30 medidas, cada célula colorida de azul para valores baixos a vermelho para valores altos, um mosaico sem padrão claro

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.

challenge icon

Desafio

Difícil

O programa lê a proporção da variância a manter, 0.7 ou mais; o código inicial prepara um gráfico.

  1. 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.
  2. Agrupe esses componentes com k-means: k = 2, n_init=10, random_state=0.
  3. 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.
  4. Faça um gráfico de dispersão dos dois primeiros componentes por cluster, com os rótulos mostly benign ou mostly 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.877

e o gráfico correspondente:

As primeiras 300 amostras nos dois primeiros componentes: um cluster predominantemente benigno à esquerda e um cluster predominantemente maligno que se espalha para a direita, com uma legenda

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
quiz iconTeste seus conhecimentos

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

Pratique por conta própria: Compilador de Python online