Processing math: 100%
Akademisyenler öncülüğünde matematik/fizik/bilgisayar bilimleri soru cevap platformu
0 beğenilme 0 beğenilmeme
754 kez görüntülendi
Python'da tek değişkenli doğrusal regresyon nasıl sıfırdan yazılır?
Veri Bilimi kategorisinde (1.8k puan) tarafından  | 754 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Tek değişkenli lineer regresyonda aşağıdaki gibi bir veri setini en iyi (hata kareleri toplamı en düşük) açıklayan y=β0+β1x doğrunun parametrelerini (β0 ve β1) hesaplamamız gerekir:

x y
1.2 2.4
2.1 5.5
3 7.9
3.9 10.5
5 14.2

 Yukarıdaki verisetinin satırlarına (xi,yi), lineer regresyon modelinin çıktılarına ypred dersek, hata kareleri toplamı (ypredyi)2 olur. Bu hata fonksiyonunu (loss function) minimize edecek katsayıların analitik çözümünü kullanalım, x'in ortalamasına ˉx ve y'in ortalamasına ˉy dersek:  β1=(xiˉx)(yiˉy)(xiˉx)2β0=ˉyβ1ˉx

Yukarıda β1'in payındaki ifade x ve y'nin kovaryansı, paydasındaki ifade de x'in varyansıdır. Ortalama, varyans ve kovaryans fonksiyonlarını yazarsak bu iş tertemiz hallolur:

 

# Değişkenler birer dizi (array) olarak verilsin
 
# Ortalama
def mean(values):
	return sum(values) / len(values)

# Varyans
def variance(values):
    m = mean(values)
    return sum([(x-m)**2 for x in values])

# Kovaryans (values1 ve values2 dizilerinin uzunluğunu eşit varsayarak)
def covariance(values1, values2):
    m1,m2 = mean(values1), mean(values2)
    return sum([(values1[i] - m1)*(values2[i] - m2) for i in range(len(values1))])
    
# Lineer regresyon katsayıları
def linear_reg_coef(values1,values2):
	b1 = covariance(values1,values2) / variance(values1)
	b0 = mean(values2) - b1 * mean(values1)
	return [b0, b1]

# Örnek

x = [1.2, 2.1, 3, 3.9, 5]
y = [2.4, 5.5, 7.9, 10.5, 14.2]

linear_reg_coef(x,y)

 

(1.8k puan) tarafından 
20,333 soru
21,889 cevap
73,624 yorum
3,092,224 kullanıcı