Menu
CoddyTech

One-Hot Encoding

Termasuk bagian Statistik untuk ML dalam perjalanan Machine Learning di Coddy. Pelajaran 53 dari 64.

Instrumen tidak memiliki urutan: jika diberi nomor 1, 2, 3, piano akan dianggap lebih besar daripada drum. One-hot encoding memberi setiap kategori kolom 0/1 tersendiri:

Instrumen empat murid, piano, drum, piano, cello, menjadi tiga kolom bernama cello, drum, dan piano: setiap baris memiliki satu 1 di kolom instrumennya dan 0 di kolom lainnya, sementara kolom minggu diteruskan

pd.get_dummies yang melakukannya, dan dtype=int meminta nilai 1 dan 0, bukan True dan False:

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

Hasilnya:

   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

Kolom baru ditambahkan di bagian akhir, satu untuk setiap nilai dengan urutan alfabetis. Dampaknya adalah lebar tabel: 500 nilai yang berbeda akan menambahkan 500 kolom.

challenge icon

Tantangan

Sedang

Situs liburan mencantumkan kabin di cabins.csv. Program membaca nama kolom, area atau heat. Kode awal memberinya nomor agar berkorelasi dengan harga, tetapi kedua kolom tidak memiliki urutan: nilai r itu dibuat-buat.

  1. Ganti baris-barisnya: lakukan encoding one-hot pada kolom (0 dan 1).
  2. Cetak jumlah kolom yang dihasilkannya, lalu setiap kolom baru beserta jumlah nilai 1-nya.

Untuk lima kabin dan input heat:

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

Coba sendiri

import pandas as pd

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

# Tulis kodemu di bawah ini
# Baris-baris ini memberi nomor pada area dan jenis pemanas, padahal keduanya tidak memiliki urutan: ganti baris-baris ini
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 iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Statistik untuk ML

Latihan sendiri: Compiler Python online