Menu
CoddyTech

Proyecciones

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

Una proyección proyecta cada punto en línea recta sobre una línea, como una sombra. Aquí están los gemelos de vino de Demasiadas características, centrados en su media, sobre dos líneas:

Dos gráficos de los mismos vinos como puntos azules alrededor del centro. A la izquierda, una línea a lo largo de la nube: las sombras naranjas se extienden mucho a lo largo de ella, dispersión 1.14. A la derecha, una línea que atraviesa la nube: las sombras se agrupan, dispersión 0.30

A lo largo de la nube, las sombras conservan la mayor parte de la dispersión, así que un número por vino dice casi lo mismo que dos.

Una dirección son dos números cuyos cuadrados suman 1, como (0.6, 0.8). Una proyección es una suma ponderada:

centered = X - X.mean(axis=0)
shadow = centered[:, 0] * 0.6 + centered[:, 1] * 0.8
print(round(shadow.std(), 3))

Esto imprime 1.136. La mejor dirección conserva la mayor dispersión.

challenge icon

Desafío

Intermedio

Un silvicultor quiere un número por piña en lugar de la longitud y el ancho. ¿Cuál de las dos direcciones conserva más dispersión de las piñas? El programa lee dos direcciones, con dos números cada una.

  1. Escribe spread_along(direction): la desviación estándar de las proyecciones de las piñas sobre esa dirección.
  2. Imprime ambas dispersiones con 3 decimales.
  3. Imprime la dirección que se debe conservar.

Para otras piñas:

Along [0.6, 0.8]: spread 2.104
Along [0.8, -0.6]: spread 0.412
Keep [0.6, 0.8]

Pruébalo tú mismo

import numpy as np
import pandas as pd

# Un ingeniero forestal midió 70 piñas de pino: su longitud y anchura en cm
cones = pd.read_csv("cones.csv")
X = np.column_stack([cones["length_cm"], cones["width_cm"]])
first = [float(input()), float(input())]
second = [float(input()), float(input())]

# 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