Python ile Basit Lineer Regresyon & Polinomal Regresyon

artisbero

Üye
16 Ara 2010
176
0
Makine Öğrenmesi nedir ?​
Makine öğrenmesi yapay zekanın alt dalıdır. Matematik ve istatistik verileri kullanarak veriler üzerinde yapılan bir eğitim ile gelecek veri tahmini bulunan bir model eğitmemizi sağlar.
Günümüzde de bir çok regresyon modeli vardır
Ana başlıklara ayıracak olursak makine öğrenmesi Supervised(Gözetimli),Unsupervised(Gözetimsiz), Reinforcement(Takviyeli) olmak üzere üç ana başlıkta ayrılır


Supervised learning giriş değeri dediğimiz input değer alan alt başlıktır. Giriş etiketlerini verdiğimiz verilerin eğitimiyle çıkış değerleri arasında bağlantı kurmamızı sağlar.

Basit Lineer Regresyon​
Makine öğrenmesinin temelini oluşturan basit fakat veriye göre başarı oranı o kadar kötü olmayan bir regresyon genelde veriler kategorik , sayısal , tahmin olarak sınıflandırılırlar.
Tahmin Aradaki eksik bilgiyi de tahmin ediyor. Genellikle ilk öğrenilen regresyondur.
Y =ßo + ß1x + £ Basit Lineer Regresyon'un arka katmanıdır.
x bağımsız değişkenimiz B1 doğrumuzun eğimi B0 ise y eksenini kestiği noktadır. £ değerimiz hata payımızı gösterir.
Eğitim kısmı linear_model.LinearRegression() şeklinde yapılmaktadır çok fazla sayısal veri ve doğrusal artışta kullanılır.



Polinomal Regresyon​

ß0 + ß1x1 + ß2x2^2 … şeklinde ilerleyen formüle sahiptir. Değişkenler arasındaki ilişki ve veriler genellikle doğrusal bir şekilde temiz gelmiyor. Bu yüzden bazı durumlarda polinomları kullanıyoruz.

Polinom modeli oluştururken polinom derecesini düzgün ayarlamamız gerekiyor eğer çok yüksek bir değer koyarsak direkt kopyalama işlemine gireceği için gerçekçi değerler vermeyecektir.
Sadece train (test) datasındaki veriyi kopyalar. Birebir sonuç verir fakat istenilen bu değil biraz daha esnek bir sonuçtur.
Kütüphane olarak LinearRegression import(içeri aktarma) ettik ve PolynomialFeatures kullandık. Maaş datasını bu regresyonla uyguladığım zaman çok daha iyi bir sonuç elde ettiğimizi görüyoruz. Sebebi seviye bir olan işçi 1000 TL maaş alıyorken
seviye 7 olan 7000 TL alıyor şeklinde bir mantıkla ilerlemeyen bir veriye sahip olduğum içindi.

maxresdefault.jpg


-------------------

Bu regresyonu deneyimlemek için maaş seviye verileri kullandım. Uygun veri çeşitlerinden biridir. Bu veri için kötü olmayan bir sonuç elde ettim


Kodumuzda kullandığımız maas dosyasını indirmek için tıkla !



Kütüphanelerin çıkartılması
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
Verinin okunması ve gerekli veriyi parçalama kısmı
#Data read
data = pd.read_csv("maaslar.csv")

#eğitim seviyesi x maaşlar y

#dataframa slice
x = data.iloc[:,1:2]
y = data.iloc[:,2:]
Verilerimizin numpy arrayine dönüştürülmesi ve ardından modelimizin fit(eğitim aşaması) edilmesi.
#translate to numpy array
X = x.values
Y = y.values


from sklearn.linear_model import LinearRegression

linear = LinearRegression()
linear.fit(x,y)
Modelin çizimini görselleştirmesini bu kısımda yapıyoruz
plt.scatter(x,y)
plt.plot(x,linear.predict(x),color='red')
plt.show()
Polinomal eğitim kısmını yapıyoruz
# non linear model oluşturma
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
poly_reg = PolynomialFeatures(degree=10)
x_poly = poly_reg.fit_transform(X)
lin_reg2 = LinearRegression()
lin_reg2.fit(x_poly,y)
Ve aynı şekilde bu regresyonumuzun da görüntülenmesini yapıyoruz
#görselleştirme
plt.scatter(X,Y)
plt.plot(x, lin_reg2.predict(poly_reg.fit_transform(X)),color='red')
plt.show()
print(lin_reg2.predict(poly_reg.fit_transform([x_poly])))

Kodumuzda görselleştirme yapmak için matplotlib pyplot kütüphanesini kullandık ilerleyen konularda detaylı bir anlatımı gelecek
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.