Menu
CoddyTech

Projeções

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

Uma projeção projeta cada ponto diretamente sobre uma linha, como uma sombra. Aqui estão os gêmeos do vinho de Too Many Features, centralizados em sua média, em duas linhas:

Dois gráficos dos mesmos vinhos como pontos azuis ao redor do centro. À esquerda, uma linha ao longo da nuvem: as sombras laranja se espalham bastante ao longo dela, dispersão 1.14. À direita, uma linha atravessando a nuvem: as sombras ficam agrupadas, dispersão 0.30

Ao longo da nuvem, as sombras mantêm a maior parte da dispersão, então um número por vinho diz quase o mesmo que dois.

Uma direção é formada por dois números cujos quadrados somam 1, como (0.6, 0.8). Uma sombra é uma soma ponderada:

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

Isso imprime 1.136. A melhor direção preserva o maior espalhamento.

challenge icon

Desafio

Médio

Um engenheiro florestal quer um número por pinha em vez de comprimento e largura. Qual das duas direções mantém mais da dispersão das pinhas? O programa lê duas direções, com dois números cada.

  1. Escreva spread_along(direction): o desvio padrão das projeções das pinhas nessa direção.
  2. Imprima as duas dispersões, com 3 casas decimais.
  3. Imprima a direção a manter.

Para outras pinhas:

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

Experimente você mesmo

import numpy as np
import pandas as pd

# Um engenheiro florestal mediu 70 pinhas: comprimento e largura em 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())]

# 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