Menu
CoddyTech

Kodowanie one-hot

Część sekcji Statystyka w uczeniu maszynowym ścieżki Machine Learning w Coddy. Lekcja 53 z 64.

Instrumenty nie mają kolejności: jeśli przypiszemy im numery 1, 2, 3, pianino będzie miało większą wartość niż perkusja. Kodowanie one-hot przypisuje każdej kategorii własną kolumnę z wartościami 0/1:

Instrumenty czworga uczniów: pianino, perkusja, pianino, wiolonczela, zostają przekształcone w trzy kolumny o nazwach wiolonczela, perkusja i pianino: w każdym wierszu jest jedna wartość 1 w kolumnie odpowiadającej instrumentowi oraz 0 w pozostałych, a kolumna tygodni pozostaje bez zmian

pd.get_dummies robi to, a dtype=int oznacza, że zamiast True i False otrzymasz 1 i 0:

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

To wyświetla:

   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

Nowe kolumny są dodawane na końcu, po jednej dla każdej wartości, w kolejności alfabetycznej. Ceną jest szerokość: 500 różnych wartości dodałoby 500 kolumn.

challenge icon

Wyzwanie

Średni

Serwis z domkami wakacyjnymi zawiera listę domków w pliku cabins.csv. Program odczytuje nazwę kolumny: area lub heat. Kod początkowy przypisuje im numery, aby skorelować je z ceną, ale żadna z tych kolumn nie ma ustalonej kolejności: ta r jest zmyślona.

  1. Zastąp jego wiersze: zakoduj kolumnę metodą one-hot (0 i 1).
  2. Wypisz, na ile kolumn została przekształcona, a następnie każdą nową kolumnę wraz z liczbą jedynek.

Dla pięciu domków i wejścia heat:

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

Spróbuj swoich sił

import pandas as pd

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

# Wpisz swój kod poniżej
# Te wiersze przypisują numery obszarom i typom ogrzewania, które nie mają naturalnego porządku: zastąp je
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 iconSprawdź się

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

Wszystkie lekcje w sekcji Statystyka w uczeniu maszynowym

Poćwicz samodzielnie: Kompilator Python online