Giriş
Veri bilimi ve makine öğrenmesi projelerinde, her şeyin başlangıcı olan bir adım, doğru eğitim ve test verilerini oluşturmaktır. Makine öğrenmesi modelinizin başarılı olabilmesi için kaliteli verilere ihtiyacınız var. Ancak, bu verilerin nasıl oluşturulacağını bilmek önemlidir. Bu yazıda, Python kullanarak test ve eğitim verisi nasıl oluşturulacağına dair detaylı bir rehber sunacağız.
Makine öğrenmesi projelerinde genellikle verilerin %70’i modelin eğitilmesi için kullanılırken, %30’u test aşamasında kullanılır. Bu oranlar, modelinizi değerlendirirken adil bir karşılaştırma yapabilmeniz için kritik öneme sahiptir. Hedefimiz, bu sürecin nasıl işleyeceğini anlamanıza yardımcı olmaktır.
Bu rehber, veri kümesi oluşturma konusunu ele alacak; hem rastgele veri oluşturma tekniklerini hem de mevcut veri kümesinden nasıl eğitim ve test verisi parçası çıkarılacağını gösterecektir. Sonuç olarak, kendi projelerinizi başlatmak ya da geliştirip incelemek için gerekli bilgilerle donanmış olacaksınız.
Rastgele Veri Oluşturma
Özellikle veri kümeniz yoksa, Python’da rastgele veriler oluşturmak için kullanabileceğiniz çeşitli kütüphaneler bulunmaktadır. NumPy, pandas ve Faker gibi kütüphaneler, veri oluşturma işlemini oldukça kolaylaştırır. Özellikle, gerçekçi veri setleri oluşturmak için Faker kütüphanesini kullanabilirsiniz.
Faker, sahte veri oluşturmak için mükemmel bir araçtır. Kullanıcı bilgileri, adresler, e-posta adresleri gibi çok çeşitli sahte veriler oluşturabilirsiniz. Örneğin, aşağıdaki gibi bir Python kodu ile 10 sahte kullanıcı oluşturabilirsiniz:
from faker import Faker
fake = Faker()
for _ in range(10):
print(fake.name(), fake.email())
Bu basit örnek ile kendinize özgü kullanıcı verileri oluşturabilirsiniz. Benzer şekilde, sayısal veriler oluşturmak için NumPy `rand` fonksiyonunu kullanabilirsiniz. Test verileri oluşturmak için ortalama, standart sapma gibi özellikleri belirleyerek çeşitli veri setleri oluşturabilirsiniz.
Pandas ile Veri Çerçevesi Oluşturma
Pandas kütüphanesi, veri analizi ve işleme konusunda oldukça yaygın olarak kullanılan bir araçtır. Eğitim ve test verilerinizi daha yönetilebilir hale getirmek için pandas kullanarak bir veri çerçevesi oluşturabilirsiniz. Örneğin, aşağıdaki kod parçasında sahte bir veri çerçevesi oluşturacağız:
import pandas as pd
import numpy as np
data = {
'İsim': [fake.name() for _ in range(100)],
'Yaş': np.random.randint(18, 70, size=100),
'Gelir': np.random.normal(loc=50000, scale=15000, size=100)
}
df = pd.DataFrame(data)
print(df.head())
Bu şekilde, 100 satırlık bir veri çerçevesi oluşturduk. Bu çerçevede sahte isimler, yaş ve gelir gibi bilgiler yer alıyor. Eğitim verinizi oluşturduktan sonra, bu veri çerçevesini eğitim ve test veri seti olarak böleceğiz.
Eğitim ve Test Verisine Ayırma
Veri çerçevenizi oluşturduktan sonra, bu veriyi eğitim ve test setlerine ayırmak için `train_test_split` fonksiyonunu kullanabilirsiniz. `train_test_split`, Scikit-learn kütüphanesinin bir parçasıdır ve veri kümenizi belirli bir oranla ayırmanıza olanak tanır.
from sklearn.model_selection import train_test_split
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.3, random_state=42)
print(X_train.shape, X_test.shape)
Bu kodla birlikte, `X_train`, `X_test`, `y_train` ve `y_test` olarak adlandırılan dört veri seti oluşturmuş olduk. Burada `test_size=0.3` belirterek verimizin %30’unun test için kullanılmasını sağladık. `random_state=42` ise işlemin tekrarı için bir başlangıç noktası belirlemiş olduk.
Veri Ön İşleme Aşamaları
Eğitim ve test verileri oluşturduktan sonra, bu verilerin makine öğrenmesi modelinize uygun hale getirilmesi gerekir. Veri ön işleme aşamaları, eksik verilerin doldurulması, kategorik verilerin sayısal verilere dönüştürülmesi gibi işlemleri içerir. Pandas, bu işlemleri gerçekleştirmek için kullanışlı fonksiyonlar sunar.
Örneğin, eğer veri çerçevenizde eksik değerler varsa, bunları doldurmak için `fillna` fonksiyonunu kullanabilirsiniz:
df.fillna(df.mean(), inplace=True)
Bu kod parçası, eksik olan değerleri veri çerçevesinin ortalaması ile doldurur. Kategorik verileri sayısal verilere dönüştürmek için ise `get_dummies` fonksiyonunu kullanabiliriz:
df = pd.get_dummies(df, columns=['İsim'], drop_first=True)
Bunlar, makine öğrenmesi modelinizin doğru bir şekilde çalışabilmesi için gerekli olan ön işleme adımlarıdır. Verileriniz temizlenip işlendikten sonra, modeli eğitmek için hazır hale getirilecektir.
Model Eğitimi ve Değerlendirmesi
Eğitim ve test verilerinizi oluşturduktan sonra, modelinizi eğitmeye geçebilirsiniz. Örneğin, basit bir doğrusal regresyon modeli oluşturabiliriz. Scikit-learn kütüphanesinden `LinearRegression` sınıfını kullanarak modelimizi oluşturalım ve eğitelim:
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, y_train)
Modelimizi eğittiğimizde, artık test verileriyle değerlendirip performansını ölçebiliriz:
y_pred = model.predict(X_test)
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_test, y_pred)
print('Ortalama Kare Hatası: ', mse)
Bu örnekte, modelin tahmin performansını ortalama kare hatası ile değerlendirdik. İyi bir modelin, düşük bir ortalama kare hatasına sahip olması beklenir.
Sonuç ve Teşvik
Test ve eğitim veri setlerinin oluşturulması, veri bilimi ve makine öğrenmesi süreçlerinde temel bir adımdır. Doğru ve kaliteli verilerle çalışmak, başarının anahtarıdır. Python, bu süreçleri kolaylaştıracak birçok kütüphane ve araç sunmaktadır. Bu yazıda öğrendiklerinizi uygulamaya geçirerek, kendi projelerinizi geliştirebilir ve daha iyi sonuçlar elde edebilirsiniz.
Kendi verilerinizi oluşturmak ve farklı makine öğrenmesi modelleri denemek için cesaretinizi toplayın. Bu alandaki öğreniminiz sırasında karşılaşacağınız zorluklar, sizi daha da ileri taşıyacaktır. Veri setleri oluşturma konusundaki gözlemleriniz ve sorularınız varsa, yorumlar bölümünde bizimle paylaşmayı unutmayın!
Unutmayın, bilgi paylaşımı ve topluluk desteği, gelişiminiz için çok önemlidir. Düzenli olarak pratik yaparak ve yeni araçlar keşfederek, Python konusunda daha da uzmanlaşacaksınız.