Basit Regresyon: Python ile Uygulama

 

Regresyon ile ilgili ikinci yazımıza devam ediyoruz. Bu yazıda teorik açıklamayı bitireceğiz ve Python ile basit bir lineer regresyon uygulaması yapacağız. Bir önceki yazımızda çoklu regresyon denklemimiz; Otomobil satış miktarı = β1TV Reklamı + β2Medya Reklamı + β3Radyo Reklamı + β0 şeklindeydi. Şimdi bu denkleme bir eleman daha ekliyoruz: hata terimi. Hata terimi bu modelde kaçırdığımız her ne varsa torba gibi içine dolduracağımız bir elemandır. Kaçırdığımız şeylerden kastım şudur: ilişki doğrusal olmayabilir, teoride kaçırdığımız ve modelde olmayan ancak gerçekte bağımlı değişkene (y) etki eden başka bağımsız değişkenler (x) olabilir veya ölçüm hatası olabilir.

Çoklu regresyon Şekli

Doğrusal regresyonda geçecek doğru her bir noktaya olan uzaklık en az olsun ve böylelikle regresyon modelimizde yeni bağımsız değişken katsayıları girdiğimizde bağımlı değişkenin değerini daha doğru tahmin edebilelim. Örneğimizden gidecek olursak; otomobil firmasıyız ve elimizde pazarlama için kullanabileceğimiz bir bütçe var bu bütçeyi üç pazarlama elamanına ne şekilde dağıtır isek en yüksek satış gerçekleştirebiliriz? Geçmiş verilerle eğitilen modelimizde bunu gerçekleştirmemiz kolay olacaktır. Bize düşen sadece hedef değişkenimizi azami yapacak katsayıları (reklam bütçelerini) belirlemek olacaktır.

Şimdi Python ile farklı bir veri üzerinden basit bir örnek yapalım:

Kütüphaneleri indirelim ve çalışma diznimizi ayarlayalım:

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import os
os.chdir('Calisma_Dizniniz')

Pandas kütüphanesinin read sınıfı read_csv() metodunu kullanarak veri setimizi indirelim: Veri setine buradan ulaşabilirsiniz.

dataset = pd.read_csv('Kidem_ve_Maas_VeriSeti.csv')

Spyder geliştirme ortamı Variable Explorer penceresinden veri setimizin yakışıklı haline bir göz atalım: Tablonun alt kısmı fazla uzun olmasın diye buraya koymadım ancak toplam 30 kayıt var. İki sütunumuz var. İlki Kıdem, ikincisi maaş. Burada kıdemin maaşa etkisini inceleyen basit doğrusal regresyon örneği yapacağız.

Değişkenlerimizi tanıyalım: Kıdem bağımsız değişken(x), Maaş ise bağımlı değişkendir(y). Başka bir deyişle; çalışanın iş tecrübesi alacağı maaşı genellikle etkiler, gerçek hayattan da az çok bildiğimiz gibi bu etki pozitif yöndedir. Kuracağımız basit regresyon modelinde kıdem arttıkça maaş artar demeye getircez, onun yolunu hazırlıyoruz  🙂

Veri Setinden Bağımlı ve Bağımsız Değişkenleri Oluşturmak

Şimdi x nitelikler matrisini ve y bağımsız değişken vektörünü oluşturalım.

X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, 1].values

Yukarıdaki kodda küçük bir detay var onu açıklamak istiyorum. x ve y birbirinden farklı veri yapısını barındırıyor. Birisi matris, diğeri vektör. Her ne kadar x nitelikler matrisi tek sütundan oluşsa ve vektör olarak kabul edilebilse bile veri yapısı olarak bir matristir. Başka bir deyişle satır ve sütun olarak koordinatlanabilir. Şayet X = dataset.iloc[:,0] deseydik yine de X’e ilk sütun olan Kidem sütununu atamış olurduk ancak veri yapısı vektör olurdu. Bu sebeple biz y = dataset.iloc[:,:-1] dedik. Yani datasetin hepsini al ama -1 indeksli sütunu (Maas) hariç tut dedik. y için ise dataset’ten 1 numaralı indekse(Maas) sahip sütunu tut getir dedik. Yani 1 ve -1 indeksi aslında aynı sütuna işaret ediyor.

Değişkenlerimizi Eğitim ve Test Olmak Üzere İkiye Bölmek

Burada çok açıklama yapmadan hemen kodlara yer vereceğim. Bu kısımla ilgili daha detaylı açıklamayı veri ön işleme yazımda bulabilirsiniz. Veri setinden eğitim için 2/3, test için 1/3 oranında veri ayırıyorum.

from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 1/3, random_state = 0)

Yukarıdaki kodlar bize dört tane yakışıklı değişken verecektir. Spyder geliştirme ortamı Variable Explorer penceresinden bunları bir görelim.

Formatı ayarlamadığım için Kıdem bilgileri ondalıklı olarak farklı görünüyor olabilir, sıkıntı yok.

Modeli Eğitme

X_train ve buna karşılık gelen y_train verisiyle modelimizi eğiteceğiz. Bunun için scikit-learn kütüphanesinden LinearRegression sınıfına ihtiyacımız olacak. Kütüphaneyi indirip sınıf nesnemizi oluşturalım:

from sklearn.linear_model import LinearRegression
regressor = LinearRegression()

regressor nesnemizi yarattık. Şimdi fit() metodunu kullanarak modelimizi eğitiyoruz. Parametre olarak yukarıda oluşturduğumuz X_train, y_train eğitim setlerimizi kullanacağız.

regressor.fit(X_train, y_train)

Böylelikle basit lineer nesnemizi oluşturmuş ve modelimizi eğitmiş oluyoruz. Alın işte size makine (regressor) öğrenmesi (fit) :). Burada arkadaşımız, verdiğimiz eğitim verilerinden hesaplamalar yapıyor ve lineer regresyon denklemini oluşturuyor.

Model Üzerinde Tahminler Yapma

Modeli oluşturduk. Şimdi sıra eğittiğimiz modele girdiler verelim bakalım bize nasıl sonuçlar üretecek. Bunun için nitelikler matrisinden ayırdığımız X_test verilerini kullanacağız. Daha önce oluşturduğumuz makineyi (regressor) yine kullanıyoruz ancak bu sefer fit() metodu değil de predict() mtodu. yani bir bakıma tahmin et Co diyoruz yaratığa 🙂

y_pred = regressor.predict(X_test)

Variable Explorer penceresinden bakalım model kendisine verdiğimiz kıdem bilgileri (X_test) ışığında hangi maaşları (y_pred) tahmin etmiş? y_pred penceresinde gördüğümüz veriler model bize öneriyor. Ben aynı zamanda y_test verilerini de yanına koydum ki model ne tahmin etmiş ancak gerçekte ne olmuş kıyas etme imkanımız olsun. Çünkü birazdan model ne kadar doğru çalışıyor ona geleceğiz.

 Regresyon Grafiği Çizmek ve Yorumlamak

matplotlib.pyplot kütüphanesini gullanarakdan kurduğumuz modeli, tahminleri, regresyon doğrusunu ve veri noktalarını (data points) görelim. Önce eğitim veri setinin (gerçek veriler) saçılma diyagramını çizelim: 

plt.scatter(X_train, y_train, color = 'red')
plt.title('Kıdeme Göre Maaş Tahmini Regresyon Modeli')
plt.xlabel('Kıdem')
plt.ylabel('Maaş')
plt.show()


Yukarıdaki grafikte eğitim için ayırdığımız verilerin saçılma diyagramını görüyoruz. İlk bakışta zaten doğrusal pozitif bir ilişki göze çarpıyor. Şimdi Aynı gerçek eğitim verisini modelimize verelim ve bize maaş değerlerini tahmin etsin ve bunun grafiğini çizelim. Sanırım bunun saçılma diyagramı değil de doğrusal bir çizgi olacağını söylememe gerek yok. Aynı kodları sadece kırmızı satırları araya sokarak çalıştırıyorum.

plt.scatter(X_train, y_train, color = 'red')
modelin_tahmin_ettigi_y = regressor.predict(X_train)
plt.scatter(X_train, modelin_tahmin_ettigi_y, color = 'blue')
plt.title('Kıdeme Göre Maaş Tahmini Regresyon Modeli')
plt.xlabel('Kıdem')
plt.ylabel('Maaş')
plt.show()


Gördüğümüz gibi eğittiğimiz modele tekrar aynı girdileri (X_train) verdiğimizde bize mavi noktaları söylüyor. Regresyon doğrusu olarak da sadece geriye mavi noktaları birleştirmek kalıyor.

plt.scatter(X_train, y_train, color = 'red')
modelin_tahmin_ettigi_y = regressor.predict(X_train)
plt.plot(X_train, modelin_tahmin_ettigi_y, color = 'blue')
plt.title('Kıdeme Göre Maaş Tahmini Regresyon Modeli')
plt.xlabel('Kıdem')
plt.ylabel('Maaş')
plt.show()


Burada keseyim ve seriye bir yazı daha ekleyeyim. Veriyle kalın…

Basit Regresyon: Python ile Uygulama” için bir yorum

  • 9 Mart 2018 tarihinde, saat 16:50
    Permalink

    Çok güzel bir anlatım teşekkür ederim

    Yanıtla

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Barkod Etiketi üretimi yapan firmaların işi ciddi bir iştir. Bu anlamda sizin de hangi firmayla çalışma yatığınız çok büyük önem taşır. Kullanım alanı sınırsızdır. Her alanda ve her sektörde bu etiketlere ihtiyaç duyulur. Etiket çeşitleri ve Barkod etiketleri, seri üretimle hazırlanmaktadır. Etiketler ahşap, plastik, metal ya da cam gibi ambalajlı ürünlerin üzerilerine ugulanır.
Mide botoksu midenin belirli yerlerine botoks maddesi enjekte etme suretiyle midedeki kasların çalışmasını sınırlandırmayı ve sayede midenin gıdaları sindirim sürecini yavaşlatarak buna bağlı olan açlık-tokluk hissi süresinin de uzatılmasını amaçlayan ameliyatsız kolay kilo verme tedavisidir. Botoks uygulanırken, midenin detaylı şekilde içerden görüntülenmesini sağlayan endoskopi uygulaması ile gerçekleştirilir. Bu sayede hastaya sadece gastroskpik uygulaması kadar bir rahatsızlık olur. Özellikle diyet programlarına ve düzenli egzersizlere uymakta zorlanan ve buna bağlı olarak da obeziteye yakalanan, bu yüzdende obezitenin sebep olduğu çeşitli sağlık sorunları olan kişiler için mide botoksu bir devrim niteliğindedir ve son yıllarda ülkemizde yaygın olarak kullanılmaktadır.
En güzel cami halısı dış avlusu olup bunun çevresi pencereli duvarlarla çevrilidir. Bu avulya 3 ü cephede olmak üzere, 8 kapıdan girilir. Şadırvan avlusu, 26 adet granit mermer ve porfir sütuna oturtulmuş, 30 kubbeyle çevrili geniş alandır. Mermer döşemeli bu geniş sahanın ortasında 6 mermer sütunlu şadırvan, sahanın azametini gösterir. Şadırvanın kemerleri, kabartma olarak Rumi geçmelerle ve köşebentleri, kabartma, lale ve karanfil motifleriyle bezelidir.
En güzel cami halısı dış avlusu olup bunun çevresi pencereli duvarlarla çevrilidir. Bu avulya 3 ü cephede olmak üzere, 8 kapıdan girilir. Şadırvan avlusu, 26 adet granit mermer ve porfir sütuna oturtulmuş, 30 kubbeyle çevrili geniş alandır. Mermer döşemeli bu geniş sahanın ortasında 6 mermer sütunlu şadırvan, sahanın azametini gösterir. Şadırvanın kemerleri, kabartma olarak Rumi geçmelerle ve köşebentleri, kabartma, lale ve karanfil motifleriyle bezelidir.
Termal Etiket Eco Termal etiket, yüzeyinde hami bir katman bulunmayan miktar çeşididir. Kumbara üzerine termal lamine edilmesi sonucunda oluşmaktadır. Kullanılan barkod yazıcının baş bölgesindeki ısı beraberlik birlikte termal sıvılaşma özelliği gösterir dahi bu şekilde Eco termal etiketin üzerine baskı alınır. Bu termal etiketlere yumruk termal olarak (ısıyla) yapılır ve yerde yüzden ribon kullanılmaz. Ribon kullanımı olmadığı için tahakküm maliyeti sıfıra yakındır.
Dijital Baskı ve baskı etiketi teknolojileri geliştikçe firmaların büyük ebatlı etiket ihtiyaçlarına da dijital çözümler sunulmaya başlamıştır. Böylece, birbirinden canlı renklerin ve kusursuz çizgilerin hakimiyetindeki büyük ebatlı dijital baskı etkileri; kurumsal firmaların reklam kampanyalarındaki en iddialı unsurlarına dönüşmüştür.