Menu
CoddyTech

Varianza explicada

Parte de la sección Aprendizaje no supervisado del Journey de Machine Learning de Coddy. Lección 27 de 51.

¿Cuánto conservaron 2 componentes? Cada componente contiene una parte de la dispersión total, su proporción de varianza explicada. Para los 13 componentes del vino:

Barras de los 13 componentes del vino que disminuyen de 0.36 a casi 0, y una línea naranja que los suma y asciende de 0.36 a 1. Cruza la línea discontinua del 90 % en el componente 8

PCA() sin n_components los conserva todos. np.cumsum proporciona el 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)

Esto imprime [0.362 0.192 0.111] y 8: los totales siguen por debajo de 0.9, más el que lo supera. Así que el mapa de vinos en 2D conservó el 55%.

challenge icon

Desafío

Intermedio

Un laboratorio de chocolate mide 9 cosas por barra. ¿Cuántos componentes conservan el 90% de la variación? scaled está listo.

  1. Ajusta PCA() y toma la proporción de cada componente.
  2. Imprime cuántos componentes alcanzan el 90%.
  3. Dibuja las proporciones como barras en 1, 2, 3..., etiquetadas como each component; el total acumulado como una línea con marker="o", etiquetada como running total; una línea gris discontinua en 0.9; y una leyenda. Muéstralo.

Para otro laboratorio:

Components for 90%: 4

Un gráfico titulado Variación conservada por cada componente para 7 componentes: barras que disminuyen desde 0.42, un total acumulado que asciende hasta 1 y cruza la línea discontinua de 0.9 en el componente 4, y una leyenda

Pruébalo tú mismo

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

# Un laboratorio de chocolatería: 9 mediciones de cada una de las 150 tabletas
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")

# Escribe tu código a continuación
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Aprendizaje no supervisado

Practica por tu cuenta: Compilador de Python online