You are on page 1of 18

Open in app Sign up Sign in

Search Write

Python ile Veri Temizleme ve Ön


İşleme
Alp
er Alper Güneş · Follow
7 min read · Jun 4, 2021

--

“If you torture the data long enough, it will confess.” -Ronald H. Coase

“Verilere yeterince uzun süre işkence ederseniz, itiraf edecektir.” -Ronald H.


Coase

— -Kullanılan kütüphanelerin isminin üstüne basarak,


dökümantasyonlarına ulaşıp ayrıntılı olarak inceleyebilirsiniz. — —
Veri ön işleme ham veri kümesinin daha anlaşılabilir bir biçime dönüşmesini
ve verinin daha verimli kullanılmasını sağlar. Yapacağımız veri ön işleme
süreci kullanılan makine öğrenmesi algoritmasının sonucunu direk olarak
etkiler.

Veri ön işleme genellikle 7 adımdan oluşur. Bunlar;

1. Veri Toplama

2.Veri kümesinin ve gerekli kütüphanelerin içeri aktarılması.

3. Eksik verilerin halledilmesi.

4. Veri kümesini bağımlı ve bağımsız değişkenlere bölmek.

5 . Kategorik değişkenlerin dönüştürülmesi.


6. Veri setinin eğitim ve test setine bölünmesi.(train/test)

7. Özellik ölçekleme ve normalleştirme.

1. Veri Toplama
Maalesef veriler her zaman makine öğrenmemiz için uygun olmuyor.
Toplanılan verilerle başa çıkıp bunları makine öğrenmesi algoritmaları için
hazırlamak oldukça zorlu bir süreç. Verilerin toplanmasın bir çok yolu var
lakin toplanmış verileri kullanıcılara sunan bir çok site mevcut. Tabii ki
buradaki veri setleri de mükemmel değiller. Çözeceğiniz probleme göre veri
seti de değişiklik gösterir. Makine öğrenmesinde her sorunun kendine özgür
bir yaklaşımı vardır.

1. Kaggle: Kaggle şuan veri bilimcilerinin en uğrak mekanlarından birisi ve


oldukça güncel!

https://www.kaggle.com/datasets

2. UCI Machine Learning Repository: Veri kümesi bulmak için en eski


kaynaklardan birisi.

http://mlr.cs.umass.edu/ml/

3. Yüksek kaliteli veri kümelerini bulabileceğiniz harika bir github reposu.

https://github.com/awesomedata/awesome-public-datasets

4. Veri bilimi projeleri için kullanılıcak veri kümelerinin bulunduğu bir site.
70+ Machine Learning Datasets & Project Ideas - Work on real-
time Data Science projects - DataFlair
Finding the right dataset while researching for machine learning or
data science projects is a quite difficult task…
data-flair.training

2.Veri kümesinin ve gerekli kütüphanelerin içeri aktarılması


Verileri incelip üzerinden hemen hemen her işlemi yapabiliğimiz bir
kütüphane mevcut. Evet tahmin ettiğiniz gibi PANDAS!. Bu sevimli
kütüphane veri bilimcilerinin gözde kütüphanelerinden birisi. Ayrıca veri
setimizi görüntüleyip gerekli önişleme işlemleri yapabilmemiz için olmazsa
olmaz.

Gerekli kütüphaneleri ‘import’ kelimesi ile içeri aktarabiliriz.

Veri setimizide read_csv() methodu ile yükleyebiliriz.


Bu örnekde csv dosyamızı okuduk lakin pandas kullanarak okunacak bir çok
dosya türü mevcut.
3. Eksik Veriler
Bazen veri setimizde eksik değerler bulunabiliyor. Veri setimize göre eksik
değerleri kaldırabilir yada ortalama,medyan ve mod değerleri ile
doldurabiliriz.

Eksik değerlerin kontrol edilmesi.

info() ile tüm özelliklerin veri tipi ile veri setinde kaç adet bulunduklarını
kontrol edebiliriz.

aynı zamanda isna() metodunu kullanarakda eksik değerleri görebiliriz.


Fakat bu method veri setindeki eksik değerleri boolean olarak göstereceği
için;
Ancak genellikle büyük veri setleriyle çalıştığımız için her bir sütun için eksik
değerlerin toplam sayısını görmek daha pratik olacaktır. Bunu isna().sum()
ile yapabiliriz.

Görüldüğü gibi ‘Age’ ve ‘Salary’ sütunları eksik değerler içermektedir.

Eksik Değerleri Kaldırmak


Pandas bulunan dropna() methodu ile eksik değer içeren satırları
kaldırabiliriz. Ancak çok fazla eksik veri içeren veri setleri için tercih edilen
bir yöntem değildir.

Onun yerine eksik verileri ortalama, mod veya medyanla değiştirebiliriz.


Bunu yaparken veri setinin varyans değerini göz önünde almak oldukça
önemlidir. Eğer veri setinde aykırı değerler var ise bunu ortalama
değiştirmek doğru bir seçenek olmaz onun yerine medyanı tercih etmek daha
iyi olacaktır. Örneğin; Elimizdeki veri seti
[1,3,nan,4,nan,1,nan,3,5,2,4,411,331,11,100] olsun bu veri setinin
ortalaması: 76.0'dır eksik değerleri 76 ile doldurmak veri setimizdeki
aykırı değerleri arttırıp varyansı yükseltecektir. Veri setinin medyan değeri
ise: 4'dür. Eksik değerlerin bu şekilde doldurulması daha doğru olacaktır.

Aman dikkat bunu yaptıkdan sonra içeri inplace=True yazmassak kalıcı bir
işlem yapmamış oluruz. !
4. Veri kümesini Bağımlı ve Bağımsız değişkenlere bölmek.
Veri setini içeri aktardıkdan sonraki adım, bağımsız değişken(X) ve bağımlı
değişkenleri belirlemek olacaktır.

Veri kümesi etiketli veya etiketsiz olabilir. Daha iyi anlaşılması için etiketli
bir veri seti üstünden örnek vereceğim.Veri setinde
‘Country’,’Age’,’Salary’ ve ‘Purchased’ sütunları mevcut. Bu veri
setinde müşterilerin özellikleri ve satın alınıp alınmadığı ile ilgili bir sütun
mevcut.

Veri setimiz de üç adet bağımsız(Country,Age,Salary) ve bir adet


bağımlı(Purchased) değişken mevcut. Bağımsız değişkenleri kullanarak
bağımlı değişkeni tahmin edeceğiz.

Sütunları okumak için pandasda bulunan .iloc() methodunu kullanacağız. İki


Sadet parametre alır; [satır , sütün]
Not: ‘:’ bütün hepsini seçmemizi sağlar, ‘[]’ ise veri setinden birden çok satır
ve sütun seçmemize yardımcı olur.

Bu yöntemle veri setimizi Bağımlı ve Bağımsız değişken olarak ayırmış olduk.

5 . Kategorik değişkenlerin dönüştürülmesi.


Şimdi kategorik verileri makine öğrenmesi algoritması için nasıl hazır hale
getireceğimize bakalım.

Veri setimizde ‘Country’ sütunu kategorikdir ve veri türü “object’’ ‘ tir.


Kullanacağımız modeller matematiksel denklemlere dayandığından metin
verileri anlaması imkansızdır. Bunları çeşitli yöntemler ile kodlayarak
modelimiz için hazır hale getirmeliyiz.

Bunu gerçekleştirmek için makine öğrenmesi algoritmalarının gözde


kütüphanesi Scikit-Learn’den LabelEncoder() adlı sınıfı kullanacağız.
Daha sonra bu sınıf ile nesne oluşturacağız ve işlemleri oluşturduğumuz bu
nesne ile yapacağız.

Görüldüğü gibi veri setimizdeki ‘Country’ sütunu metin biçimindedir. Bunları


sayısal biçime çevirmek için aşşağıdaki kodu kullanacağız.

Veri setimize tekrar bakacak olursak.


Burada üç metin değerinin de sayısal değerlere dönüştüğünü görebiliriz.

Görüldüğü gibi kategorik veriler kodlanmıştır. Ama bir sorun var !!

Makine öğrenmesi modelleri sayılar dayanır, veri setindeki metin içeren


sütunları sayıya çevirmemiz iyidir. Bununla birlikde, 1 0'dan büyük ve 2 1'den
büyük olduğundan, modeldeki denklemler İspanya’nın Almanya ve
Fransa’dan daha yüksek bir değere sahip olduğunu ve Almanya’nın
Fransa’dan daha yüksek bir değere sahip olduğunu düşünecektir.. Bu
kesinlikle doğru değildir. Sütundaki veriler aslında üç kategoridir ve
aralarında ilişkisel bir düzen yoktur. Bunun önüne geçmek için kukla
değişkenleri(dummy variables) kullanacağız.

Kukla değişkenler(dummy variables) nedir?

Kukla degişkenler bir veri sınıflandırma aracıdır. Bir kukla değişken, bir şeyin
varlığını veya yokluğunu gösterdiği 0 ve 1 değerlerini alan bir değişkendir. Bir
kategorik değişkenin ikiden fazla kategorisi olduğu durumlarda, her kategori
için bir değişken içeren bir dizi kukla değişken ile temsil edilir.

Sütun Sayısı = Kategori Türleri

Bu durumda 3 adet kategorimiz var, yani 3 durumumuz var. Bunu


yapabilmek için pandasda bulunan pd.get_dummies() özelliğini kullacağız.
Görüldüğü gibi ‘Country’ sütunundaki veriler aralarında herhangi bir çokluk
azlık ilişkisi olmadan kodlandı.

6. Veri setinin eğitim ve test setine bölünmesi.(train/test)


Makine öğrenmesi, modellerin genellikle verimizi eğitim/test(train/test)
olarak böleriz.

Genellikle veriler 70:30 yada 80:20 olacak şekilde böleriz. Bunun anlamı
verilerin %70'i eğitim %30'u test için ayrılır.

Bunu yapmak için oldukça kullanışlı bir kütüphane mevcut;


train_test_split
Şimdi eğitim ve test setimizi oluşturmak için dört adet bölüme ayırmamız
gerek. X_train(veri setinin eğitimi için), X_test (tahminde kullanılmak için),
y_train(veri setinin eğitiminde kullanılan etiketli veriler), y_test(tahminde
kullanmak için). İçerisine aldığı parametreler daha önce modelimizi eğitmek
için ayırdığımız bağımlı(X) ve bağımsız(y) değişkenler, test_size ise veri
setimizi ne kadarını eğitim ve ne kadarını test ayırıcağımızı ayarladığımız
bölüm. Ayrıca random state’i de belirleyerek her seferinde aynı verilerin
bölünmesini sağlıyoruz.

7. Özellik Ölçeklendirme
Veri ön işlemenin son ve en önemli adımı özellik ölçenlendirme.

Özellik Ölçekleme, verilerde bulunan bağımsız özellikleri sabit bir aralıkta


standartlaştırma tekniğidir. Veri ön işleme sırasında gerçekleştirilir.
Neden Ölçekleme Yapmalıyız?: Çoğu zaman, veri kümeniz büyüklük,
birim ve aralık açısından oldukça değişken özellikler barındırı. Ancak,
makine öğrenmesi algoritmalarının çoğu, hesaplamalarında iki veri noktası
arasındaki Öklid mesafesini kullandığından, bu bir sorundur.

Değerleri ölçeklendirmenin bir çok yolu var. Veriye, modele göre değişiklik
gösteren bu yöntemlere berabar göz atalım.

Standartlaşma(Standardization): Bu, veri ön işlemede en çok kullanılan


skaler türlerinden biridir. Değişken (özellik) sütunlarının ortalama değeri 0
ve standart sapması 1 olacak şekilde standart normal dağılım oluşturmaktır.
μ: ortalama, σ: standart sapma , x: değişken değeri

Normalleştirme(Normalization):

Normalleştirme, verinin özellikleri orantılı olarak korunarak 0.0 ile 1.0


arasında ölçeklendirir. Normalleştirmenin amacı, gözlemlerimizi normal bir
dağılım değiştirmektir.

Normal Dağılım: Normal dağılım, aynı zamanda Gauss dağılımı veya


Gauss tipi dağılım olarak isimlendirilen, birçok alanda pratik uygulaması
olan, çok önemli bir sürekli olasılık dağılım ailesidir. Genel olrak,
istatistiksel ve makine öğrenmesi pratiklerinde(işlemerinde), verilerimizin
normalleştirilmesini ve normal bir dağılım üzerinden yorumlamayı isteriz.
Örneğin, t-test, ANOVA’lar, lineer regresyon, lineer diskriminant
analizi(LDA) ve Gaussian naive Bayes işlemleri gibi.
Min-Max Ölçeklendirme: Bu, basit özellikli ölçeklendirmeden daha
popülerdir. Bu ölçekleyici, her bir değeri alır ve minimum olanı çıkarır ve
ardından aralığa (maks-min) böler. Ortaya çıkan değerler sıfır (0) ile bir (1)
arasında değişir.

Sklearn kütüphanesinden MinMaxScaler’ı kullararak veriler 0 ile 1 arasında


ölçekledik.

Kaynakça:

Verileri Ölçeklendirme ve Normalize Etme


Explore and run machine learning code with Kaggle Notebooks |
Using data from multiple data sources
www.kaggle.com

https://medium.com/sciforce/data-cleaning-and-preprocessing-for-
beginners-25748ee00743

https://www.linkedin.com/pulse/veri-bilimi-notlar%C4%B1-3-
%C3%B6ni%C5%9Fleme-abdullah-faruk-%C3%A7i%CC%87ftler/

Makine Öğrenmesi Makine Öğrenimi Veri Bilimi Data Science Veri

Alper
Güneş

Written by Alper Güneş Follow

15 Followers

www.linkedin.com/in/alprgunes https://github.com/alpergunes

You might also like