PCA
Parte de la sección Aprendizaje no supervisado del Journey de Machine Learning de Coddy. Lección 26 de 51.
PCA encuentra la dirección de mayor dispersión, después la mejor dirección en ángulo recto con ella, y así sucesivamente: los componentes. En los gemelos de vino:
Las proyecciones de cada fila sobre los primeros componentes se convierten en sus nuevas características:
from sklearn.decomposition import PCA
scaled = StandardScaler().fit_transform(X)
points = PCA(n_components=2).fit_transform(scaled)
print(X.shape, points.shape)Para las 13 mediciones de vino, esto imprime (178, 13) (178, 2).
Estandariza primero. El PCA busca la dispersión, así que una característica con unidades grandes, como la prolina en cientos, gana solo por su tamaño:
Desafío
IntermedioUn laboratorio de agua analiza botellas de tres manantiales, con 8 mediciones cada una. ¿Puede un mapa 2D distinguir los manantiales? draw_springs(ax, points) colorea los puntos 2D según el manantial.
- Escala
Xy después redúcela a 2 componentes con PCA, enpoints. - Imprime el número de características antes y después.
- Dibuja los puntos con
draw_springsy muestra el resultado.
Para otro laboratorio, con 6 mediciones:
From 6 features to 2Coddy describe tu mapa.
Pruébalo tú mismo
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
# Un laboratorio de análisis de agua: 8 mediciones de cada una de las 120 botellas procedentes de tres manantiales
waters = pd.read_csv("waters.csv")
X = waters.drop(columns="spring")
# Dibuja puntos 2D, agrupados por manantial, con una leyenda
def draw_springs(ax, points):
for spring in ["alpine", "volcanic", "coastal"]:
rows = (waters["spring"] == spring).to_numpy()
ax.scatter(points[rows, 0], points[rows, 1], s=16, label=spring)
ax.legend()
fig, ax = plt.subplots()
ax.set_title("Spring Waters in 2D")
ax.set_xlabel("First component")
ax.set_ylabel("Second component")
# Escribe tu código a continuación
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Aprendizaje no supervisado
1Encontrar grupos
Aprender sin etiquetasMedir la similitudK-Means a manoK-Means en scikit-learnRepaso: miembros del gimnasio7PCA en la práctica
Visualizar 64 dimensionesComponentes como patronesComprimir y reconstruirPCA antes de un modeloRepaso: escáner facial10Proyecto: Explorador de dígitos
Observa los dígitosReduce con PCAAgrupa los dígitosPon nombre a los gruposEncuentra los diferentes2Elegir k
InerciaEl método del codoPuntuaciones de siluetaEscalar antes de agruparRepaso: zonas de entrega3Interpretación de los clústeres
Perfilado de clústeresCentros en unidades realesClústeres frente a etiquetas conocidasCuándo falla K-MeansRepaso: cata de téPractica por tu cuenta: Compilador de Python online