Çoklu Regresyon (Multiple Regression): Python ile Uygulama-1

Lineer Regresyon Notlarımıza devam ediyoruz. Bu yazımızda Python ile çoklu lineer regresyon uygulaması yapacağız. Teorik olarak ilk dört yazıda iyi kötü bir şeyler söyledik. Burada teoriden bahsetmeyeceğim. Öncelikle olayı anlamak adına elimizdeki veri seti nedir, kuracağımız model ile neyi çözmeyi amaçlıyoruz, hangi nitelikler hangi değişkenlerle eşleşiyor biraz bahsetmek istiyorum. Önce veri setimizi indirip Spyder’ın yakışıklı Variable Explorer penceresinden bir bakalım. Veri setini buradan indirip çalışma dizninize kopyalayınız.

Kütüphaneleri İndirme, Çalışma Diznini Ayarlama ve Veri Setini İndirme

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import os
os.chdir('Sizin_Calisma_Dizniniz')
dataset = pd.read_csv('Sirketler_Kar_Bilgileri.csv')

Veriyi Anlamak

Yukarıdaki tabloda niteliklerimizi görüyoruz:
ArgeHarcamasi: Şirket tarafından araştırma döneminde yapılmış ARGE harcamaları. Nitelik türü nümerik.
YonetimGiderleri:  Araştırma döneminde şirketin yönetimi için yapılan idari harcamalar. Nitelik türü nümerik.
PazarlamaHarcamasi: Araştırma döneminde şirketin pazarlam faaliyetleri için yaptığı harcamalar. Nitelik türü nümerik.
Sehir: Şirketin faaliyetini yürüttüğü şehir. Nitelik türü kategorik, sırasız.
Kar: Araştırma döneminde şirketin elde ettiği kar. Nitelik türü nümerik.
Özetle, veri setimizde toplam 5 nitelik ve 50 gözlem (şirket) var.

Nitelikleri ve değişken türlerini görünce kafamızda hemen bir araştırma problemi oluşmuştur sanırım. Bingo! Şirketlerin çeşitli harcama kalemleri ile elde ettikleri kar arasındaki ilişkiyi modelleyeceğiz. ArgeHarcamasi, YonetimGiderleri, PazarlamaHarcamasi ve Sehir bağımsız değişkenleri oluştururken; Kar bağımlı değişkeni oluşturmaktadır. Eğer elde veri varsa bu değişkenlere sosyal sorumluluk projesi, eğitim harcamaları gibi diğer bütçe kalemleri de eklenebilir.

Burada araştırma sorusu şöyle olabilir: X ülkesinde, Y sektöründe ve  A,B,C şehirlerinde faaliyet gösteren Z ölçeğinde/büyüklüğündeki şirketlerin çeşitli harcamalarıyla karı arasındaki ilişki nedir? Benzer özelliklere sahip bir şirket gelecek dönem harcama planını yaparken karını maksimum kılacak şekilde harcama/gider kalemlerine ne kadar bütçe ayırmalıdır?

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

Bağımsız değişkenlerimizi nitelikler matrisi olarak X değişkeninde, bağımlı değişkenimizi de vektör olarak y değişkeninde saklayalım:

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

Yukarıdaki kodlarla; dataset’ten en sondaki (-1 indeksli) yani Kar sütununu çıkar ve  X değişkenine ata derken ikinci satırda dataset’teki sadece en sondaki (4 indeksli) yani Kar sütununu al ve y değişkenine ata demiş oluyoruz.

Kategorik Niteliği Dönüştürmek

Her şey çok güzel yalnız biz X’e 3 nümerik nitelik ile beraber şehir isimlerinin olduğu bir kategorik nitelik de atadık. Ne yapacağız şimdi? Regresyonda geçer akçe nümerik ve sürekli değişkenler. Bu sebeple bu kategorik niteliğin icabına bakmamız lazım. Kategorik değişkenimiz sırasız değişken olduğu için gölge değişken kullanarak kodlamak durumundayız. Şayet sıralı bir kategorik değişken olsaydı (Örn.: küçük, orta, büyük) label encoder kullanacaktık. Bu yazıda kategorik niteliğin dönüştürülmesi ile ilgili detaylı bilgi bulabiliriz. Dönüştürme işlemi için kodlarımız şu şekilde olacak:

from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X = LabelEncoder()
X[:, 3] = labelencoder_X.fit_transform(X[:, 3])
onehotencoder = OneHotEncoder(categorical_features = [3])
X = onehotencoder.fit_transform(X).toarray()

Yukarıdaki kodlarla neler oldu özetleyelim: İlk satırda kütüphaneleri indirdik. İkinci satırda LabelEncoder sınıfından labelencoder_X adında bir nesne yarattık ki ilk dönüştürme işini deruhte edecek zatı muhterem budur.  Üçüncü satırda X nitelikler matrisinin 3’üncü indekste bulunan sütununa (Sehir sütunu) labelencoder_X nesnemizin fit_transform() metoduyla yine kendisini parametre vererek atadık. Yani burada işin Türkçesi şehir isimleri gitti yerlerine rakamlar geldi. Şayet niteliğimiz sıralı kategorik olsa idi işi burada bırakacak idik. Maalesef değil! O halde gölge değişkenler yaratarak bu sırasızlık sorununu çözmek lazım. Şimdi burada bu sırasızlığı bir daha açıklamak isterim: Şimdi biz labelencoder ile Ankara’ya 0, Istanbul’a 1 ve Kocaeli’ye 2 kodladk. Eee ne var bunda yani? Şu var Ankara ile Istanbul kelimeleri arasında herhangi bir sıralama, küçüklük büyüklük bahis mevzuu değil ancak bunlara 1,2 diye rakamlar verince Istanbul Ankara’nın iki katı gibi abuk bir sonuç çıkıyor. İşte bu sebepledir ki gölge değişkenler oluşturuyoruz. Daha sonra dördüncü satırda OneHotEncoder sınıfından onehotencoder isimli nesneyi oluşturuyoruz. Burada nesne oluştururken sınıfın ana yapıcısına (constructor – bak sen çömez veri bilimciye neleri de bilirmiş 🙂 ) “bak sana birazdan bir veri seti gelecek onun 3’üncü indeksinde bulunan sütununa işlem yap emi!” diyoruz. Beşinci satırda onehotencoder fit_transform() nesnesi X nitelikler matrisini parametre olarak alıyor ve gölge değişkenler oluşturuyor. Yeni matrisi eskisinin üzerine yazıyoruz.

Spyder Variable Explorer’dan orijinal veri setini ve dönüştürülmüş X nitelikler matrisini karşılaştıralım:

Yukarıdaki resimde soldaki tablo orijinal veri setini sağdaki ise dönüştürme sonrası X nitelikler matrisini (bağımsız değişkenler matrisi) görmekteyiz. Gölge değişkenler 0,1,2 indeksinde yerini almış. Ankara 0, Istanbul 1 ve Kocaeli 2 indeksini almış. 3’te ise ArgeHarcamasi, 4 YonetimGiderleri, 5 PazarlamaHarcamasi var.

Gölge değişken tuzağından kaçınmak

Gölge değişkenler yaratmak regresyon modelinde çoklu bağlantıya sebep olabilir ki bu durum regresyon modellerinde istenmeyen bir durumdur. Çoklu bağlantıyı kısaca şöyle açıklayabiliriz: bağımsız değişkenlerden iki veya daha fazlası arasında aşırı yüksek korelasyon olması durumudur. Gölge değişkenlerin çoklu bağlantıya sebep olmasına gölge değişken tuzağı (dummy variable trap) deniliyor. Bunu önlemenin yolu gölge değişkenlerden birisini düşürmektir. Örneğimizden gidecek olursak ben Kocaeli’yi düşürdüm diyelim. Eğer bir sırada Ankara ve İstanbul’un değerleri 0 ise düşürmüş de olsak bu durum Kocaeli’nin 1 olduğu anlamına gelecektir. Çünkü her halükarda gölge değişkenlerden en fazla/en az bir tanesi 1 değerine sahip olmak durumundadır. Basit bir kod ile bu tuzaktan kurtulalım:

X = X[:,1:]

Yukarıdaki kodla X nitelikler matrisindeki tüm satırları (birinci : onu ifade ediyor) ve 1’inci sütun dahil olmak üzere sona kadar tüm sütunları (1: bunu ifade ediyor) tekrar X’e ata demiş oluyoruz. Yani 0 indeksli sütunu düşürmüş oluyoruz. Gitti Ankara, yukarıda da Kocaeli’yi örnek vermiştik. Neyse sağlık olsun. Aslında bir çok Python kütüphanesi bu tuzağı fark edip tedbir alıyor ama öğrenmek adına burada elle yapmış olduk.

Veriyi 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 setinde 50 kayıt vardı bunlardan 40’ını eğitim 10 tanesini de test için kullanalım.

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

Yukarıda Spyder’ın Variable Explorer penceresinde eğitim ve test olarak parçalara ayrılmış değişkenlerimizin tablo görüntüsü bulunmaktadır. Burada eğitim setlerinde gölge değişken tuzağı için düşürdüğümüz bir sütunun bulunmadığına dikkat ediniz. Bir sonraki yazıda devam edeceğim. Veriyle kalın…

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.