Python ile Veri Standardizasyonu Nasıl Yapılır?

Python ile Veri Standardizasyonu
Share on twitter
Twitter
Share on linkedin
LinkedIn
Share on facebook
Facebook
Share on pinterest
Pinterest
İçindekiler

Veri bilimi projelerinde, makine öğrenmesi algoritmaları kullanılmadan önce elimizdeki veriyi kullanacağımız algoritmaya hazır hale getirmek için veri ön işleme (Data Preprocessing) adı verilen bir sürece başlarız. Algoritmanın yüksek performanslı bir şekilde çalışabilmesi için eksik ve aykırı değerlerde, gözlemlerde, değişkenlerde bazı ayarlamalar yapmamız gerekebilir. Bu içeriğimizde Python ile veri standardizasyonu konusundan bahsedeceğiz. Gerçek hayat projelerinde en çok vakit alan, bir veri bilimcisinin en çok üzerinde durduğu ve projenin en çetrefilli kısımlarından birisidir veri ön işleme.

Veri ön işlemenin kendi içinde birçok adımı ve tekniği vardır. Bunlardan bazıları, aykırı gözlem analizi, eksik değer analizi, baskılama, doldurma yöntemleri, KNN algoritmasının kullanıldığı tahmine dayalı değer atama yöntemi, veri standardizasyonu olarak sıralanabilir. Bu yazıda en kritik ve en çok hata yapılan, algoritmanın hassaslığıyla ilgili konulardan biri olan veri standardizasyonu konusunu değişkenler üzerinden ele alacağız.

Değişken Standardizasyonu Nedir?

Değişkenin kendi içindeki bilgi ve varyans yapısını bozmadan, değerleri değiştirip belli bir formata sokup bu formatta işlenmesine olanak sağlamak için veriyi standart hale getirme işlemine standardizasyon adını veriyoruz. Değişken (veri) standardizasyonunda taşınan bilginin dağılımı yayılımı değişmez. Bu kısmı biraz daha açmak gerekirse istatiksel değerler korunur, mesela 10. Sırada olan bir veri yeni formatta tekrar 10. Sırada yer alır.

Numpy ve Pandas ile Veri Standardizasyonu

Konunun basitçe anlaşılıp temel mantığının gösterilmesi için kendi oluşturduğumuz veri yapıları üzerinden ilerleyeceğiz. Değişken standardizasyonu işlemi için veri bilimi klasiklerinden olan Numpy ve Pandas kütüphanelerini yüklüyoruz. Bunun için öncelikle array ve sözlük yapıları üzerinden küçük bir dataframe oluşturup verileri float olarak işlemek üzere kodlarımızı aşağıdaki gibi yazıyoruz.

import numpy as np
import pandas as pd
V1 = np.array([1,3,6,5,7])
V2 = np.array([7,7,5,8,12])
V3 = np.array([6,12,5,6,14])
df = pd.DataFrame(
        {"V1" : V1,
         "V2" : V2,
         "V3" : V3})

df = df.astype(float)
df

Yazmış olduğumuz koddan sonra editörümüzde aşağıdaki çıktıyı elde ederiz.



	V1	V2	V3
0	1.0	7.0	6.0
1	3.0	7.0	12.0
2	6.0	5.0	5.0
3	5.0	8.0	6.0
4	7.0	12.0	14.0

Bu işlemlere başlamak için makine öğrenmesinin en popüler kütüphanesi olan scikit-learn adlı kütüphaneyi yükleyip içerisinden preprocessing adlı fonksiyonu çağırmamız gerekiyor.

from sklearn import preprocessing

Kütüphanenin güncel sürümüne göre yükleme işlemini gerçekleştirdikten sonra preprocessing içerisinden scale (dönüştür) fonksiyonunu df ifadesi olarak kısalttığımız veri seti üzerinde uyguluyoruz.

preprocessing.scale(df)

Ve aşağıdaki gibi dönüştürülmüş veri yapısını elde ediyoruz.

array([[-1.57841037, -0.34554737, -0.70920814],
       [-0.64993368, -0.34554737,  0.92742603],
       [ 0.74278135, -1.2094158 , -0.98198051],
       [ 0.27854301,  0.08638684, -0.70920814],
       [ 1.2070197 ,  1.81412369,  1.47297076]])

Bu kısımda standardizasyonu ele aldık. Şimdi başka bir format değişikliği tekniği olan normalizasyona bakalım. Normalize fonksiyonu ile orijinal veri setimizdeki değerleri 0-1 arasındaki değerlere dönüştürüyoruz. Temsil edilen her bir değer özündeki bilgiyi ve yayılımı korumaya devam etmektedir.

preprocessing.normalize(df)

Yukarıdaki koddan sonra aşağıdaki gibi bir çıktı elde ederiz.

array([[0.10783277, 0.75482941, 0.64699664],
       [0.21107926, 0.49251828, 0.84431705],
       [0.64699664, 0.53916387, 0.53916387],
       [0.4472136 , 0.71554175, 0.53665631],
       [0.35491409, 0.60842415, 0.70982818]])
 

Peki ya standartlaştırma işleminde değer aralığını kendimiz belirlemek istiyorsak? Bu noktada MinMaxScaler adlı fonksiyon yardımımıza koşuyor. Aşağıdaki kodu geliştirici ortamımızda yazalım.

scaler = preprocessing.MinMaxScaler(feature_range = (100,200))

Burada scaler adını verdiğimiz ifade ile fonksiyon için bir dönüştürücü oluşturduk. Bu dönüştürücüyü bir sonraki kod bloğunda tekrar çalıştıracağız. Parantez içindeki feature_range argümanı bizden, belirlemek istediğimiz değer aralığını girmemizi ister.

Şimdi fonksiyonu çalıştıracağımız kodu yazalım.

scaler.fit_transform(df)

fit_transform ifadesi standardizasyon işlemlerinde kullandığımız bir fonksiyondur ve az önce nesne haline getirdiğimiz scaler adlı ifade üzerinde bu fonksiyonu çalıştırmış olduk. Ve aşağıdaki kod çıktısını alıyoruz.

array([[100.        , 128.57142857, 111.11111111],
       [133.33333333, 128.57142857, 177.77777778],
       [183.33333333, 100.        , 100.        ],
       [166.66666667, 142.85714286, 111.11111111],
       [200.        , 200.        , 200.        ]])

Ana hatlarıyla Python ile veri standardizasyonu konusunu ele aldık. Görüş ve sorularınızı aşağıda yer alan yorumlar kısmında bize iletebilirsiniz.

Teknoloji'den geri kalmamak için e-posta listemize abone olun!

Bu içerikler de hoşunuza gidebilir!

açık-kaynak-

Açık Kaynak Nedir? Bu Yöntem Neden Kullanılır?

Açık kaynak nedir sorusunu genellikle programlamayla, kodlarla ilgilenmeye başlamış insanlar sorsa da açık kaynaktan herkes faydalanabiliyor. Açık kaynak, bir bilgisayar yazılımının kodlarının

BlueBreath

BlueBreath: Yapay Zeka Destekli Akıllı Maske

BlueBreath, yapay zeka teknolojisi ile çalışan %99.7 hava temizleme verimliliğine sahip ve yeniden kullanılabilen bir akıllı maske. Bu yeni nesil akıllı maskenin

github

Github “master” Terimini Değiştiriyor

Github CEO’su Nat Friedman’ın yaptığı açıklamaya göre Github, köleliğe referans yaptığı gerekçisiyle “efendi” anlamına gelen “master” terimini “main” (ana) olarak değiştirmek üzere

Bizi Takip Edin!

Yorum yapın