Python ile Sıfırdan Lineer Regresyon Metodu İmplementasyonu
Önceki yazılarımızda Lineer Regresyonun nasıl çalıştığını matematiksel olarak açıklamıştık. Lineer Regresyon Nasıl Çalışır ve Least Mean Square Nasıl Çalışır yazılarını okuyup konu hakkında daha fazla bilgi sahibi olabilirsiniz. Bu yazıları okumadan direk buraya gelirseniz, yapacağımız işlemler sizin için kafa karıştırıcı olabilir. Lineer regresyon hala sıkça kullanılan basit ama etkili bir algoritmadır. Peki Lineer Regresyon Python ile nasıl implement edilir onu göstereceğim.
Önceki yazıdan hatırlayacağımız üzere her \(\theta\) için gradient descent algoritmasını kullanarak Bu \( \theta \) ları en uygun hale getirmeye çalışıyorduk. Peki bunları yaparken kullandığımız başlıca formüller nelerdi bunlara göz gezdirelim.
Şuan fonksiyonlarımız hazır. Yapmamız gereken şey bunları sırayla çağırıp bir veri kümesi üzerinde test etmek. Elimde şu linkte bulunan bir veri kümesi var bu veri kümesinde regresyon görevimiz için kullanacağımız random seçilen noktalar var. Bu veri kümesini indirip kendinizde test edebilirsiniz. Amacımız bu random seçilen noktalara uyan en iyi çizgiyi bulabilmek.
Bu koddan sonra datamız hazır olmuş olacaktır.
Bundan sonra yapmamız gereken şey ağırlık parametrelerimiz olan \( \theta \) ları güncelleyip veri kümemize uyan en iyi çizgiyi bulmak olacaktır. Öncelikle veri kümemize bakalım.
\[ \theta = \big(44.567, 18.347 \big) \]
Bu da demek oluyor ki bizim datasetimize uyan en iyi çizgi
\[ h \big(x\big) = \theta_{0} + \theta_{1} x_{1} \]
\[ h \big(x\big) = 44.567 + 18.347 x \]
En son bu bulduğumuz çizgiyi çizdirmek istersek ortaya şöyle bir sonuç çıkıyor:
Bütün kod ise şu şekildedir. Yapmanoz gereken linkten output.csv dosyasını indirip bunu çalıştığınız klasöre eklemek. Daha sonra bir python dosyası açıp bu kodu yapıştırdığınız zaman size aynı sonucu verecektir.
Bugünlük söyleyeceklerim bu kadar. Eğer herhangi bir hata alırsanız veyahut anlamadığınız bir yer varsa yorum bırakırsanız dönüş yaparım. Görüşmek üzere hoşça kalın.
REFERENCES:
https://github.com/Sierkinhane/CS229-ML-Implementation
https://memegenerator.net/instance/70999312/do-it-shia-labeouf-just-do-it
![]() |
- Hipotez Fonksiyonumuz: \( h_{ \theta } \big(x\big) = \theta_{0} + \theta_{1} x_{1} \)
- \( h \big(x\big) = \sum_0^n \theta_{i} x_{i} = \theta^{T} x \)
- Cost Function = \( J \big(\theta\big) = \frac{1}{2} \sum_1^m \big( h_{\theta} \big(x^{i}\big) - y^{i} \big) ^{2} \)
- \[ \frac{\partial}{\partial \theta_{j}} J \big(\theta\big) = ( h_{\theta} \big(x\big) - y\big) x_{j} \]
Bu formüllerden sonra gördüğümüz \( theta \) yani ağırlık parametremizi nasıl değiştireceğimiz ise şöyleydi:
\[ \theta_{j} := \theta_{j} + \alpha \big(y^{i} - h_{\theta} \big(x^{i}\big)\big) x_{j}^{i}\]
Bu formüllerin nasıl ortaya çıktığını tam olarak bilmiyorsanız önceki yazılarımı okuyabilirsiniz. (Sayfanın başında bahsettiğim). Bütün bunları tekrar ettikten sonra hadi başlayalım.
Öncelikle hipotez fonksiyonumuzu implement edelim.
Hipotez
Bildiğimiz üzere \( h \big(x\big) = \sum_0^n \theta_{i} x_{i} = \theta^{T} x \). Bundan dolayı hipotez fonksiyonumuzu şu şekilde implement ediyoruz.
Cost Function
Bildiğimiz üzere Cost Function = \( J \big(\theta\big) = \frac{1}{2} \sum_1^m \big( h_{\theta} \big(x^{i}\big) - y^{i} \big) ^{2} \). Bundan dolayı hipotez fonksiyonumuzu şu şekilde implement ediyoruz.
Theta Güncelleme
Bildiğimiz üzere \( \theta_{j} := \theta_{j} + \alpha \big(y^{i} - h_{\theta} \big(x^{i}\big)\big) x_{j}^{i} \) Bundan dolayı hipotez fonksiyonumuzu şu şekilde implement ediyoruz.
Şuan fonksiyonlarımız hazır. Yapmamız gereken şey bunları sırayla çağırıp bir veri kümesi üzerinde test etmek. Elimde şu linkte bulunan bir veri kümesi var bu veri kümesinde regresyon görevimiz için kullanacağımız random seçilen noktalar var. Bu veri kümesini indirip kendinizde test edebilirsiniz. Amacımız bu random seçilen noktalara uyan en iyi çizgiyi bulabilmek.
Veriyi Hazırlama
Bildiğimiz üzere verimize uygunluk olması açısından 1 ekliyorduk. \( x_{0} = 1 \). Normalde \( x_{0}\) diye bir değişkenimiz yok. Bu kodlar ile verimize birler (1) ekleyelim. Bundan önce dataseti kullanmak için indirip şöyle bir kod yazabiliriz.
Bundan sonra yapmamız gereken şey ağırlık parametrelerimiz olan \( \theta \) ları güncelleyip veri kümemize uyan en iyi çizgiyi bulmak olacaktır. Öncelikle veri kümemize bakalım.
![]() |
| Lineer Regresyon için Veri Kümemiz |
Lineer Regresyon
Veri kümemiz regresyon için çok uygun. Eminim ki hepiniz kafanızda bu grafiğe uyan bir çizgi hayal etmişsinizdir. Şimdi de bu grafiğe uyan o çizgiyi bulacak olan kodu yazalım. Bunun için lineer regresyon algoritmasını kullanacağız.Yapacağımız şeyler:- Her data için bir tahmin yapacağız (hipotez)
- Daha Sonra hatamızı ölçeçeğiz (Cost Function)
- Daha sonra ağırlık \( \theta \) larımızı güncelleyeceğiz
Bu fonksiyonu çalıştırdıktan sonra THETA parametremizi yazdırdığımızda ortaya şu sonuç çıkıyor:
\[ \theta = \big(44.567, 18.347 \big) \]
Bu da demek oluyor ki bizim datasetimize uyan en iyi çizgi
\[ h \big(x\big) = \theta_{0} + \theta_{1} x_{1} \]
\[ h \big(x\big) = 44.567 + 18.347 x \]
En son bu bulduğumuz çizgiyi çizdirmek istersek ortaya şöyle bir sonuç çıkıyor:
![]() |
| Lineer Regresyon Çizgisi |
Bütün kod ise şu şekildedir. Yapmanoz gereken linkten output.csv dosyasını indirip bunu çalıştığınız klasöre eklemek. Daha sonra bir python dosyası açıp bu kodu yapıştırdığınız zaman size aynı sonucu verecektir.
Bugünlük söyleyeceklerim bu kadar. Eğer herhangi bir hata alırsanız veyahut anlamadığınız bir yer varsa yorum bırakırsanız dönüş yaparım. Görüşmek üzere hoşça kalın.
REFERENCES:
https://github.com/Sierkinhane/CS229-ML-Implementation
https://memegenerator.net/instance/70999312/do-it-shia-labeouf-just-do-it



Yorumlar
Yorum Gönder