Menu
CoddyTech

Encontre os Diferentes

Parte da seção Aprendizado não supervisionado do Journey de Machine Learning da Coddy. Lição 47 de 51.

Uma última pergunta: quais digitalizações são as mais incomuns? Uma floresta de isolamento atribui uma pontuação a cada digitalização, e quanto menor a pontuação, mais estranha ela é. Primeiro, as pontuações mais altas, as mais comuns:

Dez imagens digitalizadas organizadas em duas fileiras, as mais comuns do conjunto: cinco zeros arredondados, três noves, um oito e um dois

iso = IsolationForest(contamination=0.02, random_state=0)
flags = iso.fit_predict(X_small)
scores = iso.score_samples(X_small)
typical = np.argsort(scores)[::-1][:10]

np.argsort lista os números das linhas da menor pontuação para a maior; invertida, a mais comum aparece primeiro. Mostre-as a partir de X: todos os 64 pixels.

challenge icon

Desafio

Médio

O desafio final. O código inicial reúne tudo até aqui e guess, o nome do cluster de cada digitalização.

  1. Ajuste uma floresta de isolamento a X_small (contamination=0.02, random_state=0). Imprima quantas digitalizações ela sinaliza, qual dígito é sinalizado com mais frequência e em quantas dessas o nome do cluster está correto.
  2. Desenhe as 10 digitalizações mais estranhas, começando pela mais estranha: uma grade de 2 por 5 em gray_r, com os dígitos como títulos.

Com contamination=0.01:

Flagged as odd: 18 of 1797 scans
Most often odd: 7 (10 scans)
Named right by their cluster: 11 of 18 odd scans

Uma grade com os 7s mais comuns fica assim:

Dez 7s manuscritos em uma grade de 2 por 5, cada um com o título 7, todos parecidos: uma barra superior, uma pequena barra transversal e um traço para baixo

A sua mostra as mais estranhas. Os clusters identificam corretamente 79,2% de todas as digitalizações: como se comparam as incomuns? Você explorou 1,797 digitalizações e nunca treinou com um rótulo.

Experimente você mesmo

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
from sklearn.ensemble import IsolationForest

# De Look at the Digits: 1,797 imagens de 64 pixels, intensidade da tinta de 0 a 16
digits = load_digits()
X = digits.data
y = digits.target

# De Shrink with PCA: 80% da variância em 13 números por imagem
pca = PCA(n_components=0.8)
X_small = pca.fit_transform(X)

# De Cluster the Digits: 10 grupos, identificados sem rótulos
km = KMeans(n_clusters=10, n_init=10, random_state=0).fit(X_small)

# De Name the Clusters: o dígito que dá nome ao grupo de cada imagem (79.2% correspondem a y)
names = pd.crosstab(km.labels_, y).idxmax(axis=1)
guess = names.to_numpy()[km.labels_]

# 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