Kesinlik ve Duyarlılık
Coddy'nin Machine Learning Journey'sinin Denetimli Öğrenme bölümünün bir parçası. Ders 22 / 58.
İki soru, bir testin grip yanıtlarını değerlendirir. Grip alarmı verdiklerinden kaçı doğruydu? Gerçek grip vakalarının kaçını yakaladı?
Kesinlik ilk soruyu yanıtlar: 45 alarmdan 42'si. Duyarlılık ikinci soruyu yanıtlar: 47 vakadan 42'si.
from sklearn.metrics import precision_score, recall_score
print(f"{precision_score(y_test, pred):.3f}")
print(f"{recall_score(y_test, pred):.3f}"):.3f her zaman 3 ondalık basamak gösterir, bu yüzden 0.9 değeri 0.900 olarak yazdırılır. Şu çıktı yazdırılır:
0.933
0.894Daha maliyetli hataya göre seçim yap. Atlanan bir grip vakası yayılır, bu nedenle bu testin duyarlılığa ihtiyacı vardır. Gerçek e-postaları gözden kaçıran bir spam filtresinin ise kesinliğe ihtiyacı vardır.
Görev
OrtaBir mağazanın filtresi sahte görünen yorumları gizler. Başlangıç kodu tek bir modelden strict_pred ve eager_pred olmak üzere iki sürüm oluşturur ve hangi hatanın daha çok zarar verdiğini okur: missed (sahte bir yorum yayında kalır) ya da hidden (gerçek bir yorum ortadan kaybolur).
- Her filtrenin kesinlik ve duyarlılık değerini 3 ondalık basamakla yazdır.
- Aşağıda gösterildiği gibi, bu hatalardan daha azını yapan filtreyi yazdır (
missediçin:Fewer fakes missed: ...).
Başka bir mağaza ve hidden için:
Strict: precision 0.900, recall 0.450
Eager: precision 0.640, recall 0.800
Fewer real reviews hidden: strictKendin dene
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import precision_score, recall_score
# Hangi hata daha çok zarar verir: missed (sahte bir yorum yayında kalır) mı, yoksa hidden (gerçek bir yorum gizlenir) mı?
worse = input()
# Her yorum için bir satır: fake içindeki 1, yorumun sipariş üzerine yazıldığı anlamına gelir
reviews = pd.read_csv("reviews.csv")
features = ["words", "exclamations", "account_days", "user_reviews", "stars", "photo"]
X_train, X_test, y_train, y_test = train_test_split(reviews[features], reviews["fake"], test_size=0.25, random_state=0)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)
proba = model.predict_proba(X_test)[:, 1]
# Aynı modelden iki filtre: strict, sahte olma olasılığı 0.7 olduğunda bir yorumu gizler; eager ise 0.3 olduğunda gizler
strict_pred = proba >= 0.7
eager_pred = proba >= 0.3
# Kodunuzu aşağıya yazın
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
1İlk Modeliniz
Örneklerden ÖğrenmeEğitim ve Test KümeleriUydurma ve Tahmin EtmeBir Modeli PuanlamaÖzet: Tohum Sınıflandırıcı4Lojistik Regresyon
Evet-Hayır TahminleriKarar EşiğiKanıt Olarak AğırlıklarBirden Fazla SınıfÖzet: Spam Filtresi2En Yakın Komşular
k-NN Nasıl Karar Verirk'yi SeçmekKarar SınırlarıKomşular İçin ÖlçeklemeÖzet: Şarap Komşuları5Sınıflandırıcıları Değerlendirme
Karmaşıklık MatrisiKesinlik ve DuyarlılıkF1 SkoruDengesiz SınıflarROC EğrileriÖzet: Tarama Testi8Çapraz Doğrulama
K-Katlı DoğrulamaModelleri Adil Bir Şekilde KarşılaştırmaIzgara AramasıÖzet: Kaykay Tamiri11Proje: Penguen Türleri
Penguenlerle TanışınVerileri HazırlayınBir Model SeçinEn İyisini AyarlayınModeli Yayına AlınKendi başına pratik yap: Online Python derleyicisi