Menu
CoddyTech

One-Hot-Encoding

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

Instrumente haben keine Rangfolge: Mit den Nummern 1, 2, 3 würde Klavier als mehr gelten als Schlagzeug. One-Hot-Encoding weist stattdessen jeder Kategorie eine eigene 0/1-Spalte zu:

Die Instrumente von vier Schülern, Klavier, Schlagzeug, Klavier, Cello, werden zu drei Spalten mit den Namen Cello, Schlagzeug und Klavier: Jede Zeile enthält eine einzelne 1 in der Spalte des jeweiligen Instruments und 0 in den anderen Spalten, während die Spalte „Wochen“ unverändert übernommen wird

pd.get_dummies erledigt das, und dtype=int fordert 1 und 0 statt True und False an:

pupils = pd.DataFrame({"instrument": ["piano", "drums", "piano", "cello"],
                       "weeks": [4, 3, 6, 10]})
encoded = pd.get_dummies(pupils, columns=["instrument"], dtype=int)
print(encoded)

Dies gibt Folgendes aus:

   weeks  instrument_cello  instrument_drums  instrument_piano
0      4                 0                 0                 1
1      3                 0                 1                 0
2      6                 0                 0                 1
3     10                 1                 0                 0

Die neuen Spalten werden am Ende angefügt, eine pro Wert in alphabetischer Reihenfolge. Der Nachteil ist die Breite: 500 verschiedene Werte würden 500 Spalten hinzufügen.

challenge icon

Aufgabe

Mittel

Eine Ferienanlage listet Hütten in cabins.csv auf. Das Programm liest einen Spaltennamen ein, area oder heat. Das Startprogramm nummeriert ihn, um mit dem Preis zu korrelieren, aber keine der beiden Spalten hat eine Reihenfolge: Dieses r ist frei erfunden.

  1. Ersetze die entsprechenden Zeilen: Kodiere die Spalte one-hot (0 und 1).
  2. Gib aus, in wie viele Spalten sie umgewandelt wurde, und danach jede neue Spalte mit der Anzahl ihrer 1en.

Für fünf Hütten und die Eingabe heat:

heat became 2 columns:
heat_gas: 3 cabins
heat_wood: 2 cabins

Probier es selbst

import pandas as pd

cabins = pd.read_csv("cabins.csv")
column = input()

# Schreibe deinen Code unten
# Diese Zeilen weisen den Gebieten und Heizungsarten Zahlen zu und geben ihnen damit eine Reihenfolge, die sie nicht haben: Ersetze sie
numbers = {"coast": 1, "hills": 2, "lake": 3, "woods": 4, "gas": 1, "solar": 2, "wood": 3}
cabins[column] = cabins[column].map(numbers)
print(f"{column} against price: r = {round(cabins[column].corr(cabins['price']), 2)}")
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