Menu
CoddyTech

One-Hot Encoding

Coddy'nin Machine Learning Journey'sinin Makine Öğrenimi için İstatistik bölümünün bir parçası. Ders 53 / 64.

Enstrümanların sırası yoktur: 1, 2, 3 diye numaralandırıldıklarında piyano, davuldan daha büyük bir sayı olur. One-hot kodlama, bunun yerine her kategoriye kendine ait bir 0/1 sütunu verir:

Dört öğrencinin enstrümanları olan piyano, davul, piyano ve çello; çello, davul ve piyano adlarında üç sütuna dönüşür: her satırda, enstrümanının sütununda tek bir 1 ve diğerlerinde 0 bulunurken haftalar sütunu olduğu gibi aktarılır

Bunu pd.get_dummies yapar ve dtype=int, True ve False yerine 1 ve 0 ister:

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

Şunun çıktısını verir:

   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

Yeni sütunlar, alfabetik sırayla her değer için bir tane olacak şekilde sona eklenir. Bunun bedeli genişliktir: 500 farklı değer, 500 sütun ekler.

challenge icon

Görev

Orta

Tatil sitesi, kabinleri cabins.csv dosyasında listeler. Program bir sütun adı okur: area veya heat. Başlangıç kodu bunu fiyatla ilişkilendirmek için sayısallaştırır, ancak bu sütunların hiçbirinin sıralaması yoktur: bu r uydurmadır.

  1. Satırlarını değiştir: sütunu one-hot encode et (0 ve 1).
  2. Kaç sütuna dönüştüğünü, ardından her yeni sütunu 1 sayısıyla birlikte yazdır.

Beş kabin ve heat girdisi için:

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

Kendin dene

import pandas as pd

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

# Kodunuzu aşağıya yazın
# Bu satırlar, bölgeleri ve ısıtma türlerini gerçekte sahip olmadıkları bir sıraya göre numaralandırıyor: bunları değiştirin
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 iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Makine Öğrenimi için İstatistik bölümündeki tüm dersler

Kendi başına pratik yap: Online Python derleyicisi