DBSCAN
Parte da seção Aprendizado não supervisionado do Journey de Machine Learning da Coddy. Lição 20 de 51.
Este capítulo encontra agrupamentos de qualquer formato e os pontos que não pertencem a nenhum. Ao final, você mapeia as luzes de um vale:
Primeiro, os bancos de areia das focas que fizeram o k-means falhar em Quando o K-Means falha. O DBSCAN segue os grupos em vez disso:
Um ponto que tenha min_samples pontos (incluindo ele mesmo) dentro de eps, o raio do círculo, faz parte de uma multidão. As multidões se expandem por meio desses pontos. Não é preciso escolher k:
from sklearn.cluster import DBSCAN
labels = DBSCAN(eps=0.2, min_samples=5).fit_predict(X)
print(labels.max() + 1)Isso imprime 2: as multidões são numeradas a partir de 0, então o maior número mais um é a quantidade delas.
Desafio
MédioEm um lago congelado, patinadores correm por uma pista que serpenteia entre duas ilhas, enquanto uma multidão assiste a uma partida de hóquei. k-means dividiria a pista em pedaços. O programa lê eps em metros.
- Ajuste o DBSCAN com esse eps e
min_samples=5; mantenha as multidões emlabels. - Imprima quantas multidões ele encontrou.
- Desenhe-as com
draw_crowds(ax, X, labels)e exiba o gráfico.
Para outro lago e eps 3.5:
Crowds found: 3Coddy descreve seu gráfico. Em seguida, execute-o com eps 8: para onde foram as multidões?
Experimente você mesmo
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import DBSCAN
# Posições de 170 patinadores no lago congelado, em metros
skaters = pd.read_csv("skaters.csv")
X = np.column_stack([skaters["x_m"], skaters["y_m"]])
eps = float(input())
# Desenha cada grupo com uma cor própria e indica seu tamanho
def draw_crowds(ax, X, labels):
for crowd in range(labels.max() + 1):
rows = labels == crowd
ax.scatter(X[rows, 0], X[rows, 1], s=14, label=f"{rows.sum()} skaters")
ax.legend()
fig, ax = plt.subplots()
ax.set_title("Skaters on the Lake")
ax.set_xlabel("East (m)")
ax.set_ylabel("North (m)")
# 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 entregaPratique por conta própria: Compilador de Python online