Menu
CoddyTech

Variância Explicada

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

Quanto 2 componentes mantiveram? Cada componente representa uma parcela da dispersão total, sua razão da variância explicada. Para os 13 componentes do vinho:

Barras para 13 componentes do vinho diminuindo de 0.36 até quase 0, e uma linha laranja somando-os, subindo de 0.36 até 1. Ela cruza a linha tracejada de 90% no componente 8

PCA() sem n_components mantém todos. np.cumsum fornece o total acumulado:

pca = PCA().fit(scaled)
ratio = pca.explained_variance_ratio_
print(ratio[:3].round(3))
total = np.cumsum(ratio)
print((total < 0.9).sum() + 1)

Isso imprime [0.362 0.192 0.111] e 8: os totais ainda ficam abaixo de 0.9, além daquele que ultrapassa. Portanto, o mapa 2D do vinho manteve 55%.

challenge icon

Desafio

Médio

Um laboratório de chocolate mede 9 características por barra. Quantos componentes mantêm 90% da dispersão? scaled está pronto.

  1. Ajuste PCA() e obtenha a proporção de cada componente.
  2. Imprima quantos componentes atingem 90%.
  3. Desenhe as proporções como barras em 1, 2, 3..., rotuladas como each component; o total acumulado como uma linha com marker="o", rotulada como running total; uma linha cinza tracejada em 0.9; e uma legenda. Exiba o gráfico.

Para outro laboratório:

Components for 90%: 4

Um gráfico intitulado Dispersão mantida por cada componente para 7 componentes: barras diminuindo a partir de 0.42, um total acumulado que sobe até 1 e cruza a linha tracejada de 0.9 no componente 4, e uma legenda

Experimente você mesmo

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA

# O laboratório de um fabricante de chocolate: 9 medidas para cada uma das 150 barras
bars = pd.read_csv("chocolate.csv")
scaled = StandardScaler().fit_transform(bars)

fig, ax = plt.subplots()
ax.set_title("Spread Kept by Each Component")
ax.set_xlabel("Component")
ax.set_ylabel("Share of spread")

# 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