Menu
CoddyTech

Birden Fazla Sınıf

Coddy'nin Machine Learning Journey'sinin Denetimli Öğrenme bölümünün bir parçası. Ders 19 / 58.

Limon, misket limonu ya da portakal mı? Lojistik regresyon üç sınıfı da ele alır. İşte yeni bir meyve, limonlarla portakalların arasına düşüyor:

Sol: çap ve ağırlığa göre 45 meyve; misket limonları küçük, limonlar ortada, portakallar büyük ve limonlarla portakalların arasındaki yeni bir meyve için siyah bir yıldız. Sağ: çubuklarla gösterilen olasılıkları; limon 0.61, misket limonu 0.00, portakal 0.39

model = LogisticRegression(max_iter=1000)
model.fit(X, kind)  # X: çap, ağırlık; kind: limon, misket limonu veya portakal
print(model.classes_)
print(np.round(model.predict_proba([[6.7, 144]]), 2))
print(model.predict([[6.7, 144]]))

Şunu yazdırır:

['lemon' 'lime' 'orange']
[[0.61 0.   0.39]]
['lemon']

Her satır, classes_ sırasına göre her sınıf için bir olasılık içerir ve bunların toplamı 1 eder. predict en büyük olanı seçer.

Yani model ne kadar emin olduğunu söylüyor: %61 limon yakın bir sonuç, yeniden değerlendirmeye değer.

challenge icon

Görev

Orta

Bir podcast uygulaması yeni bölümleri komedi, haber veya gerçek suç kategorilerine ayırır. Başlangıç kodu, episodes.csv dosyasındaki (uzunluk, konuşmacı sayısı, dakika başına kahkaha sayısı) verilerle bir LogisticRegression modeli eğitir ve yeni bir bölümü tek satırlı bir tablo olan episode içine okur.

describe(episode) işlevini tamamla:

  1. Her program türünün olasılığını, model.classes_ sırasına göre, tam yüzde olarak yazdır.
  2. Olasılığı en yüksek türü döndür.

Başka bir uygulamadaki bir bölüm için:

comedy: 12%
news: 70%
true crime: 18%
Best guess: news

Kendin dene

import pandas as pd
from sklearn.linear_model import LogisticRegression

episodes = pd.read_csv("episodes.csv")
features = ["length_min", "speakers", "laughs_per_min"]
model = LogisticRegression(max_iter=1000)
model.fit(episodes[features], episodes["show_type"])


# Bir bölüm için her show_type değerinin olasılığını yazdırır (tek satırlık bir tablo), ardından en olası türü döndürür
def describe(episode):
    # Kodunuzu buraya yazın
    return "unknown"


# Aşağıdaki satırları değiştirmeyin: girdiden alınan yeni bir bölüm
length = float(input())
speakers = int(input())
laughs = float(input())
episode = pd.DataFrame({"length_min": [length], "speakers": [speakers], "laughs_per_min": [laughs]})
best = describe(episode)
print(f"Best guess: {best}")
quiz iconKendini test et

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

Denetimli Öğrenme bölümündeki tüm dersler

Kendi başına pratik yap: Online Python derleyicisi