Unsupervised Learning em Python
Benjamin Wilson
Director of Research at lateral.io
178 amostras de 3 variedades de vinho tinto: Barolo, Grignolino e Barbera
Features medem composição química, ex.: teor alcoólico
Propriedades visuais como “intensidade de cor”
from sklearn.cluster import KMeans
model = KMeans(n_clusters=3)
labels = model.fit_predict(samples)
df = pd.DataFrame({'labels': labels, 'varieties': varieties}) ct = pd.crosstab(df['labels'], df['varieties'])print(ct)
varieties Barbera Barolo Grignolino
labels
0 29 13 20
1 0 46 1
2 19 0 50
As features do vinho têm variâncias bem diferentes!
A variância de uma feature mede a dispersão dos valores
feature variance
alcohol 0.65
malic_acid 1.24
...
od280 0.50
proline 99166.71

As features do vinho têm variâncias bem diferentes!
A variância de uma feature mede a dispersão dos valores
feature variance
alcohol 0.65
malic_acid 1.24
...
od280 0.50
proline 99166.71

No k-means: variância da feature = influência da feature
StandardScaler transforma cada feature para média 0 e variância 1
Dizemos que as features ficam “padronizadas”

from sklearn.preprocessing import StandardScalerscaler = StandardScaler()scaler.fit(samples) StandardScaler(copy=True, with_mean=True, with_std=True)samples_scaled = scaler.transform(samples)
StandardScaler e KMeans têm métodos parecidos
Use fit() / transform() com StandardScaler
Use fit() / predict() com KMeans
Precisamos de duas etapas: StandardScaler, depois KMeans
Use um pipeline do sklearn para combinar etapas
Os dados fluem de uma etapa para a próxima
from sklearn.preprocessing import StandardScaler from sklearn.cluster import KMeans scaler = StandardScaler() kmeans = KMeans(n_clusters=3)from sklearn.pipeline import make_pipelinepipeline = make_pipeline(scaler, kmeans)pipeline.fit(samples)
Pipeline(steps=...)
labels = pipeline.predict(samples)
Com padronização de features:
varieties Barbera Barolo Grignolino
labels
0 0 59 3
1 48 0 3
2 0 0 65
Sem padronização foi bem ruim:
varieties Barbera Barolo Grignolino
labels
0 29 13 20
1 0 46 1
2 19 0 50
StandardScaler é uma etapa de “pré-processamento”
MaxAbsScaler e Normalizer são outros exemplos
Unsupervised Learning em Python