Menu
CoddyTech

Projekcje

Część sekcji Uczenie nienadzorowane ścieżki Machine Learning w Coddy. Lekcja 25 z 51.

Rzut przenosi każdy punkt prosto na linię, niczym cień. Oto bliźniacze wina z lekcji Too Many Features, wyśrodkowane względem swojej średniej, na dwóch liniach:

Dwa wykresy tych samych win jako niebieskich kropek wokół środka. Po lewej linia wzdłuż skupiska: pomarańczowe cienie rozciągają się daleko wzdłuż niej, rozrzut 1.14. Po prawej linia w poprzek skupiska: cienie zbijają się razem, rozrzut 0.30

Wzdłuż chmury cienie zachowują większość rozrzutu, więc jedna liczba na wino mówi niemal tyle, co dwie.

Kierunek to dwie liczby, których kwadraty sumują się do 1, na przykład (0.6, 0.8). Rzut cienia to suma ważona:

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

Wypisuje 1.136. Najlepszy kierunek zachowuje największe rozproszenie.

challenge icon

Wyzwanie

Średni

Leśniczy chce mieć jedną liczbę dla każdego szyszki zamiast długości i szerokości. Który z dwóch kierunków zachowuje większy rozrzut szyszek? Program wczytuje dwa kierunki, po dwie liczby każdy.

  1. Napisz spread_along(direction): odchylenie standardowe rzutów szyszek na ten kierunek.
  2. Wypisz oba rozrzuty z dokładnością do 3 miejsc po przecinku.
  3. Wypisz kierunek, który należy zachować.

Dla innych szyszek:

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

Spróbuj swoich sił

import numpy as np
import pandas as pd

# Leśnik zmierzył 70 szyszek sosnowych: ich długość i szerokość w 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())]

# Napisz swój kod poniżej
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Uczenie nienadzorowane

Poćwicz samodzielnie: Kompilator Python online