Menu
CoddyTech

Warum Merkmale skalieren

Teil des Abschnitts Statistik für ML der Machine Learning-Journey von Coddy. Lektion 47 von 64.

Welcher Kunde ist einem neuen am ähnlichsten? Viele Modelle messen den Abstand zwischen Stichproben: Quadriere die Differenz bei jedem Merkmal, addiere sie und ziehe die Quadratwurzel.

Eine 25-jährige Person mit einem Einkommen von 52.000 $ im Vergleich zu einer 61-jährigen Person mit einem Einkommen von 53.000 $:

Zwei Balken, die zeigen, wie viel jedes Merkmal zum Abstand zwischen den beiden Kunden beiträgt: Alter, ein Altersunterschied von 36 Jahren, ergibt 1.296, ein kaum sichtbarer Strich; Einkommen, ein Unterschied von 1.000 $, ergibt 1.000.000, ein langer Balken

Für eine ganze Tabelle summiert axis=1 die Quadrate jeder Zeile, und .argmin() findet die nächstgelegene Zeile:

a = np.array([25, 52000])  # Alter, Einkommen
X = np.array([[61, 53000],   # die 61-jährige Person
              [26, 55000]])  # eine 26-jährige Person mit einem Einkommen von $55,000
dists = np.sqrt(((X - a) ** 2).sum(axis=1))
print(np.round(dists, 2))
print(dists.argmin())

Dies gibt aus:

[1000.65 3000.  ]
0

Die 61-jährige Person ist am nächsten: Dollarbeträge sind größer, daher wiegen $1,000 schwerer als 36 Jahre. Ohne Skalierung entscheiden die größten Einheiten.

Dieses Kapitel lässt jedem Feature eine faire Chance.

challenge icon

Aufgabe

Mittel

Ein Geschäft vergleicht Waschmaschinen anhand von Preis ($), Energieverbrauch (kWh pro Jahr) und Wasserverbrauch (Liter pro Waschgang), angegeben in features. Das Programm liest die Positionen zweier Maschinen, i und j. Gib Folgendes aus:

  1. Squared gaps: die quadrierte Differenz für jedes Merkmal.
  2. Distance: auf 2 Dezimalstellen gerundet.
  3. Dominant feature: den Namen des Merkmals mit der größten quadrierten Differenz.

Für zwei andere Maschinen:

Squared gaps: [2500 6400    1]
Distance: 94.35
Dominant feature: energy

Probier es selbst

import numpy as np

features = ["price", "energy", "water"]
# Eine Zeile pro Waschmaschine: Preis in Dollar, Energieverbrauch in kWh pro Jahr, Wasserverbrauch in Litern pro Waschgang
machines = np.array([[499, 160, 48],
                     [349, 210, 55],
                     [899, 120, 42],
                     [529, 250, 50],
                     [279, 230, 60],
                     [749, 140, 45]])
i = int(input())
j = int(input())

# Schreibe deinen Code unten
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Statistik für ML

Übe selbstständig: Online-Python-Compiler