CodeBlanks Logo Icon CodeBlanks

Özellik çıkarımı

Özellik çıkarımı, mevcut özelliklerden yeni özellikler türetir.

Özellik çıkarımı

Ham veriden (tarih, metin, görüntü) modelin kullanabileceği sayılar üretmeye özellik çıkarımı denir. Tarih bunun klasik örneğidir:

from datetime import date
d = date(2024, 3, 15)
print(d.year, d.month, d.weekday())   # 2024 3 4  (0 = pazartesi)
hafta_sonu = d.weekday() >= 5

Model "2024-03-15" metnini anlamaz; ama "ayın 3'ü", "cuma", "hafta sonu değil" gibi parçalar satış tahmininde çok bilgi taşır.

Metinden özellik

Metin için en basit yöntem kelime saymaktır. CountVectorizer her kelimeye bir sütun açar:

from sklearn.feature_extraction.text import CountVectorizer
metin = ["ucuz ürün ucuz", "kaliteli ürün"]
cv = CountVectorizer()
X = cv.fit_transform(metin).toarray()
print(cv.get_feature_names_out())   # ['kaliteli' 'ucuz' 'ürün']
print(X)                            # [[0 2 1] [1 0 1]]

Uzunluk, ünlem sayısı, büyük harf oranı gibi basit sayımlar da spam tespitinde güçlü özelliklerdir.

Uygulama Kelime say

CountVectorizer ile yorumlar listesini sayım matrisine çevir. Kelimeleri get_feature_names_out() ile, matrisi toarray() ile alt alta yazdır.

Başlangıç kodu

model.py
from sklearn.feature_extraction.text import CountVectorizer

yorumlar = ["harika film", "kötü film kötü", "harika oyuncu"]

# buraya yaz

Örnek çözüm

model.py
from sklearn.feature_extraction.text import CountVectorizer

yorumlar = ["harika film", "kötü film kötü", "harika oyuncu"]

cv = CountVectorizer()
X = cv.fit_transform(yorumlar)
print(cv.get_feature_names_out())
print(X.toarray())

Beklenen çıktı

['film' 'harika' 'kötü' 'oyuncu']
[[1 1 0 0]
 [1 0 2 0]
 [0 1 0 1]]

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 <code>date(2024, 3, 16).weekday()</code> 5 ise bu gün hafta sonu mudur?

  • Hayır, pazartesi
  • Belirlenemez
  • Evet, cumartesi Doğru cevap
  • Hayır, cuma

Açıklama: weekday 0 = pazartesi ... 5 = cumartesi, 6 = pazar.

2 Kelime sütunlarının adlarını al.

Soru
adlar = cv.____()
Cevap
adlar = cv.get_feature_names_out()

Açıklama: get_feature_names_out sütun sırasıyla kelimeleri verir.

3 Ham veriyi özelliklerle eşleştir.

Kavram Anlamı
Tarih Ay, haftanın günü
Metin Kelime sayıları
Konum Merkeze uzaklık
Görüntü Piksel değerleri

Başlangıç bölümündeki tüm dersler