Menu
CoddyTech

Uydurma Ne Kadar İyi?

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

Her bulutun bir doğrusu vardır, bu yüzden uyumları değerlendirmek gerekir. Bir denizci rüzgâr ve tekne hızlarını kaydetti: doğrunun kareli hatalarını ortalamayla, en tembel tahminle karşılaştırın:

Rüzgâr hızına karşı tekne hızını gösteren altı noktalı iki grafik. Solda: noktalarla arasında uzun kırmızı boşluklar olan ortalama düzeyinde yatay bir doğru; kareli hatalar 16.23. Sağda: küçük kırmızı boşlukları olan uyum doğrusu; kareli hatalar 0.35

R kare, doğrunun açıkladığı bu yayılımın payıdır:

wind = np.array([6, 8, 10, 12, 15, 18])
boat = np.array([3.1, 4.4, 4.9, 6.2, 6.8, 8.1])
slope, intercept = np.polyfit(wind, boat, 1)
predicted = slope * wind + intercept
ss_res = ((boat - predicted) ** 2).sum()  # uyum: 0.35
ss_tot = ((boat - boat.mean()) ** 2).sum()  # ortalama: 16.23
print(np.round(1 - ss_res / ss_tot, 3))

Bu, 0.979 değerini yazdırır: doğru, hızdaki değişkenliğin %98'ini açıklar. 1 kusursuz bir doğruyu, 0 ise ortalamadan daha iyi olmadığını ifade eder.

Sayıları tahmin eden bir modelin standart değerlendirme ölçütüdür. Uydurulmuş bir doğru için r kareye eşittir.

challenge icon

Görev

Orta

Bir mantar çiftliği, mushrooms.csv dosyasında 16 yetiştirme yatağını kaydetti. Program bir sütun adı okur ve başlangıç kodu, bu sütundan harvest_kg değerini tahmin eden doğruya uyar. Raporunda r_squared gerekiyor; bu değer henüz boş.

  1. r_squared(y, predicted) işlevini, R kare değerini döndürecek şekilde tamamla.
  2. En sonda kontrol değerini yazdır: x ile y arasındaki korelasyonun karesini al, 100 ile çarp ve 1 ondalık basamağa yuvarla.

Başka bir çiftlik için ve humidity girdisiyle:

humidity explains 27.0% of the harvest variation
Check with r squared: 27.0%

Kendin dene

import numpy as np
import pandas as pd


# y için tahminlerin R kare değerini döndürür
def r_squared(y, predicted):
    # Kodunuzu buraya yazın
    return 0


beds = pd.read_csv("mushrooms.csv")
column = input()
# Aşağıdaki satırları değiştirmeyin
x = beds[column]
y = beds["harvest_kg"]
slope, intercept = np.polyfit(x, y, 1)
predicted = slope * x + intercept
r2 = r_squared(y, predicted)
print(f"{column} explains {np.round(r2 * 100, 1)}% of the harvest variation")

# Kodunuzu aşağıya yazın
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