Alle Herausforderungen
Einfach 0 gelöst 0% Erfolgsquote

Min-Max-Normalisierung

Skaliere ein Merkmal so, dass sein kleinster Wert 0 und sein größter 1 wird.

Das lernst du

  • Werte auf den Bereich 0-1 skalieren
  • Ein Merkmal behandeln, dessen Werte alle gleich sind
  • Daten für das Training vorbereiten

Problem

Merkmale auf verschiedenen Skalen (Alter in Jahren, Einkommen in Dollar) verwirren viele Modelle. Die Min-Max-Normalisierung skaliert ein Merkmal auf den Bereich 0 bis 1:

x' = (x - min) / (max - min)

Sind alle Werte gleich (max = min), gib für jeden Wert 0 zurück.

Implementiere min_max_normalize(values).

Eingabe

values: Die Werte eines Merkmals.

Ausgabe

Gib die normalisierten Werte in derselben Reihenfolge zurück.

Einschränkungen

1 ≤ Länge ≤ 10.000

-1.000.000 ≤ jeder Wert ≤ 1.000.000

Beispiele

Beispiel 1
Eingabe:
values = [10.0, 20.0, 15.0, 30.0]

Erwartete Ausgabe:
expected = [0.0, 0.5, 0.25, 1.0]
Eingabe:
std::vector<double> values = {10.0, 20.0, 15.0, 30.0};

Erwartete Ausgabe:
std::vector<double> expected = {0.0, 0.5, 0.25, 1.0};
Eingabe:
double[] values = new double[] {10.0, 20.0, 15.0, 30.0};

Erwartete Ausgabe:
double[] expected = new double[] {0.0, 0.5, 0.25, 1.0};

Erläuterung

min = 10 und max = 30, also ist der Bereich 20: (10 - 10) / 20 = 0, (20 - 10) / 20 = 0.5, (15 - 10) / 20 = 0.25 und (30 - 10) / 20 = 1.

Beispiel 2
Eingabe:
values = [5.0, 5.0, 5.0]

Erwartete Ausgabe:
expected = [0.0, 0.0, 0.0]
Eingabe:
std::vector<double> values = {5.0, 5.0, 5.0};

Erwartete Ausgabe:
std::vector<double> expected = {0.0, 0.0, 0.0};
Eingabe:
double[] values = new double[] {5.0, 5.0, 5.0};

Erwartete Ausgabe:
double[] expected = new double[] {0.0, 0.0, 0.0};

Erläuterung

Alle Werte sind gleich, also ist der Bereich 0 und jeder Wert wird zu 0.

Referenzen

Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.

Von anderen lernen

Community-Lösungen

Noch keine veröffentlichten Lösungen. Löse die Aufgabe und teile als Erster eine Lösung.