Menu
CoddyTech

Centra w rzeczywistych jednostkach

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

Środek klastra to jego typowy element. K-means znalazł środki parku w przeskalowanych danych, więc są wyrażone jako wartości z. Te same środki przed i po przeskalowaniu:

Dwa wykresy przedstawiające odwiedzających park rozrywki, na których krzyżykami zaznaczono środki 3 klastrów. Po lewej osie przeskalowane: środki znajdują się przy wartościach takich jak 0.8, 1.3. Po prawej rzeczywiste jednostki: te same środki przy 6.8 godzinach i 13.9 atrakcjach, 6.0 i 6.2, 2.4 i 3.0

Zachowaj skalera: pamięta średnią i rozrzut każdej cechy, a inverse_transform cofa skalowanie:

scaler = StandardScaler()
km.fit(scaler.fit_transform(park))
centers = scaler.inverse_transform(km.cluster_centers_)
print(centers.round(1))

To wyświetla liczbę godzin, przejazdów i wiek — po jednym wierszu na każdy klaster:

[[ 6.   6.2 38.4]
 [ 2.4  3.  45.8]
 [ 6.8 13.9 20.7]]

Środek klastra 2 wynosił 0.8 i 1.3. Teraz odczytujemy 6.8 godziny i 13.9 przejazdów: ten sam punkt, wyrażony w jednostkach, z których człowiek może korzystać.

challenge icon

Wyzwanie

Średni

Producent rękawic przekształca klastry dłoni w 4 rozmiary rękawic. Kod startowy skaluje 150 dłoni, grupuje je w klastry i wczytuje dłoń klienta do new_hand.

  1. Znajdź klaster, do którego dołącza nowa dłoń: najpierw ją przeskaluj.
  2. Przekształć środki z powrotem na cm.
  3. Wypisz środek tego klastra z dokładnością do 1 miejsca po przecinku, jak poniżej.

Dla innego producenta rękawic:

Your glove size: hand 20.3 cm, palm 8.9 cm, finger 8.6 cm

Spróbuj swoich sił

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans

# 150 dłoni zmierzonych przez producenta rękawiczek, w cm: długość dłoni, szerokość dłoni, długość środkowego palca
hands = pd.read_csv("hands.csv")
scaler = StandardScaler()
scaled = scaler.fit_transform(hands)
# Jeden klaster na każdy rozmiar rękawiczek
km = KMeans(n_clusters=4, n_init=10, random_state=0)
km.fit(scaled)

# Dłoń nowego klienta jako jednowierszowa tabela z tymi samymi kolumnami
new_hand = pd.DataFrame({
    "hand_cm": [float(input())],
    "palm_cm": [float(input())],
    "finger_cm": [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