Python Pipeline: Adım Adım Uygulama Örneği

Python Pipeline Nedir?

Python pipeline, verilerin bir kaynak noktadan işlenmesi ve nihai sonuca ulaşana kadar geçen tüm aşamaları tanımlayan bir süreçtir. Genellikle veri bilimi ve makine öğrenmesi projelerinde kullanılır ve bu süreç içerisinde verilerin temizlenmesi, dönüştürülmesi ve çeşitli modellere tabi tutulması sağlanır. Pipeline’lar, verimliliği artırmak, tekrarı azaltmak ve kodun bakımını kolaylaştırmak adına önemli bir araçtır.

Pipeline’lar, verilerin belirli bir formatta ve yapıda aktarılmasını garanti eder. Örneğin, bir veri kümesini okuduktan sonra, ilk önce eksik değerleri doldurmak, ardından veriyi standart bir formata dönüştürmek ve son olarak model eğitimi yapmak gibi adımları içerebilir. Bu sayede her adımın ayrı ayrı işlenmesi yerine tüm işlemler zincirleme olarak oluşturulmuş olur.

Daha fazla modülerlik ve okunabilirlik sağlamak amacıyla Python, bu tür işlemler için farklı kütüphaneler ve framework’ler sunar. Özellikle scikit-learn, veri ön işleme ve modelleme aşamalarını bir arada kullanarak daha etkin bir pipeline yapısı oluşturmanıza olanak tanır.

Python Pipeline Kurulumu

Python pipeline oluşturmaya başlarken ilk olarak gerekli kütüphaneleri yüklememiz gerekiyor. Gerekli kütüphaneler genellikle pandas, numpy ve scikit-learn gibi veri analizi ve modelleme için yaygın olarak kullanılan kütüphanelerdir. Bunları pip komutuyla yükleyebilirsiniz:

pip install pandas numpy scikit-learn

Gerekli kütüphaneleri yükledikten sonra, işlediğimiz veri ile ilgili bir örnek veri çerçevesi oluşturalım. Aşağıda, basit bir veri çerçeve oluşturma ve işleme adımlarını görebilirsiniz:

import pandas as pd
import numpy as np

# Örnek veri çerçevesi oluşturma
data = {
    'isim': ['Ali', 'Ayşe', 'Mehmet', None],
    'yaş': [25, np.nan, 30, 22],
    'gelir': [5000, 6000, np.nan, 4000]
}

df = pd.DataFrame(data)

Yukarıdaki örnekte, dört kişilik bir veri kümesi oluşturdum. Bazı eksik veri noktalarına dikkat çekmek önemli. İleri ki adımda bu eksik verilerle nasıl baş edeceğimizi göreceğiz.

Veri Ön İşleme Adımları

Pipeline sürecinin en kritik adımlarından biri veri ön işleme aşamasıdır. Bu aşama, modelin başarısını doğrudan etkilemektedir. İlk olarak, eksik değerleri doldurmamız gerekiyor. Pandas kütüphanesinin fillna fonksiyonu ile bu işlemi gerçekleştirebiliriz. Aşağıdaki kodda eksik değerleri ortalama ile dolduruyoruz:

# Eksik değerleri ortalama ile doldurma
df['yaş'] = df['yaş'].fillna(df['yaş'].mean())
df['gelir'] = df['gelir'].fillna(df['gelir'].mean())

Yukarıdaki kod ile yaş ve gelir sütunlarındaki eksik değerler, o sütundaki değerlerin ortalaması ile doldurulmuştur. Bu adım, eksik verilerin model performansını olumsuz etkilemesini engeller.

Bir diğer önemli ön işleme adımı ise kategorik değişkenleri sayısal verilere dönüştürmektir. Bunu yapabilmek için get_dummies fonksiyonunu kullanabiliriz. Aşağıda, isim sütununu sayısal bir formata dönüştürme örneğini bulabilirsiniz:

# Kategorik değişkenleri sayısal verilere dönüştürme
df = pd.get_dummies(df, columns=['isim'], drop_first=True)

Bu adımlar tamamlandıktan sonra artık verimizin modelleme aşamasına geçmeye hazırız.

Model Seçimi ve Pipeline Oluşturma

Bir model seçtikten sonra, bu modeli bir pipeline içine dahil etmek için scikit-learn’in Pipeline sınıfını kullanacağız. Örnek olarak, basit bir doğrusal regresyon modeli kullanarak örnek bir pipeline oluşturalım. İlk olarak gerekli kütüphaneleri import edelim:

from sklearn.pipeline import Pipeline
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split

Modelimizi oluşturmadan önce verimizi eğitim ve test setlerine ayırmalıyız. Bunun için train_test_split fonksiyonunu kullanacağız:

X = df.drop('gelir', axis=1)
y = df['gelir']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Burada, geliri tahmin edeceğimiz hedef değişken olarak belirledik ve geri kalan sütunları özellikler olarak aldık. Eğitilecek modelin oluşturulması adımına geçelim:

model = Pipeline([
    ('regression', LinearRegression())
])

Modelimizi oluşturduktan sonra, eğitim veri setini kullanarak eğitmemiz gerekecek:

model.fit(X_train, y_train)

Model eğitimi tamamlandıktan sonra, test veri seti üzerinde tahminler yapabiliriz:

predictions = model.predict(X_test)

Sonuç olarak, modelimizin tahmin performansını değerlendirmek için bazı metrikler kullanmalıyız. Örneğin, ortalama kare hata (MSE) ve R^2 skoru gibi metrikler kullanabiliriz:

from sklearn.metrics import mean_squared_error, r2_score

mse = mean_squared_error(y_test, predictions)
r2 = r2_score(y_test, predictions)
print(f'Mean Squared Error: {mse}')
print(f'R^2 Score: {r2}')

Bu metrikler ile modelinizin ne kadar başarılı olduğunu ölçebilirsiniz. Eğer performans yeterli değilse, farklı modellere geçmeyi veya veriyi daha fazla ön işlemeye tabi tutmayı düşünebilirsiniz.

Sonuç ve İleri Düzey Uygulamalar

Python pipeline oluşturarak veri işleme ve model eğitme sürecini organize bir hale getirmeyi başardık. Bu yazıda oluşturduğumuz basit pipeline, veri bilimi projelerinin temelini atmak için güzel bir örnek sunuyor. Ancak gerçek dünya uygulamalarında daha karmaşık yapmak mümkündür. Örneğin, hiperparametre optimizasyonu, çapraz doğrulama veya farklı model türleri ile birden fazla modelin bir arada kullanılması gibi ileri düzey özellikler eklenebilir.

Veri bilimi alanında daha komplike sistemlere geçmek isterseniz, scikit-learn ile ensemble yöntemlerini, derin öğrenmeyi ve büyük veri işleme gibi konulara yönelebilirsiniz. Her biri, taleplere uygun olarak farklı pipeline yapıları gerektirmekte ve onları ele almak için derinlemesine bilgi sahibi olmanız gerekecektir.

Python pipeline örneği ile veri işleme ve modelleme sürecini bir bütün haline getirme fikrinin, kendi projelerinize nasıl uygulanabileceği üzerinde düşünmeyi teşvik ediyorum. Unutmayın, deneyim kazanarak daha etkili ve verimli çözümler üretmek mümkün. Yazarak ve deneyerek öğrenmek, her zaman en iyi yoldur.

Scroll to Top