Python Sklearn'i kullanarak Test Veri Kümeleri Oluşturmak
Python Sklearn'i kullanarak Test Veri Kümeleri Oluşturmak
Python'da Scikit-learn (sklearn
) kullanarak test veri kümeleri oluşturmak, makine öğrenimi süreçlerinde kritik bir adımdır. Bu işlem, modelin genel performansını değerlendirmek ve overfitting (aşırı uyum) gibi problemleri önlemek için gereklidir. İşte bu konuyu kapsamlı bir şekilde ele alalım:
1. Giriş
Scikit-learn, veri kümenizi eğitim ve test setlerine bölerken kullanabileceğiniz çeşitli araçlar sunar. En yaygın kullanılan fonksiyonlardan biri train_test_split
'tir. Bu fonksiyon, veriyi rastgele olarak iki veya daha fazla parçaya ayırmak için kullanılır.
2. Gerekli Kütüphaneleri İçe Aktarma
Öncelikle, gerekli kütüphaneleri içe aktarmanız gerekiyor:
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
3. Veri Setinin Hazırlanması
Veri Seti Oluşturma
Bir veri seti oluşturmak için pandas kullanabilirsiniz:
# Örnek veri seti oluşturma
data = {
'feature1': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'feature2': [10, 9, 8, 7, 6, 5, 4, 3, 2, 1],
'label': [0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
}
df = pd.DataFrame(data)
X = df[['feature1', 'feature2']] # Özellikler
y = df['label'] # Etiketler
Burada X
, modelin eğitiminde kullanılacak özellikleri içerirken, y
, etiketleri içerir.
Gerçek Dünya Verileri
Gerçek dünya veri setleri genellikle CSV dosyaları veya veritabanlarından gelir. Bu verileri pandas ile okuyabilir ve işleyebilirsiniz:
df = pd.read_csv('your_data.csv')
X = df[['feature1', 'feature2']]
y = df['label']
4. Veriyi Eğitim ve Test Setlerine Bölme
train_test_split
fonksiyonunu kullanarak veriyi eğitim ve test setlerine bölebilirsiniz:
# Veriyi eğitim ve test setlerine bölme
X_train, X_test, y_train, y_test = train_test_split(
X, y,
test_size=0.3, # Test setinin oranı (örn: %30)
random_state=42 # Sonuçların tekrar üretilebilirliğini sağlamak için
)
Parametreler
-
test_size
: Test setinin oranını belirtir. Örneğin,test_size=0.3
ifadesi, verinin %30'unun test seti olarak ayrılmasını sağlar.test_size
bir oran (0.0 ile 1.0 arasında) veya bir tam sayı (örneğin 10) olabilir. -
train_size
: Eğitim setinin oranını belirtir.test_size
belirtildiğinde bu parametre otomatik olarak ayarlanır. Ancak,train_size
kullanarak test setinin boyutunu otomatik olarak ayarlamak mümkündür. -
random_state
: Rastgelelik tohumunu belirler. Aynırandom_state
değeri kullanıldığında, aynı veri bölmelerini tekrar elde edersiniz. Bu, tekrarlanabilir sonuçlar elde etmenizi sağlar. -
shuffle
: Verinin bölünmeden önce karıştırılıp karıştırılmayacağını belirler. Varsayılan olarakTrue
'dır, ancakshuffle=False
olarak ayarlanabilir. -
stratify
: Sınıflar arasında dengeli bir bölünme sağlar. Özellikle sınıfların dengesiz olduğu veri setlerinde,stratify=y
kullanmak, her iki setin de orantılı sınıf dağılımını korur.
5. Sonuçları Kontrol Etme
Elde edilen eğitim ve test veri kümelerini kontrol etmek için:
print("Eğitim Özellikleri:")
print(X_train)
print("\nEğitim Etiketleri:")
print(y_train)
print("\nTest Özellikleri:")
print(X_test)
print("\nTest Etiketleri:")
print(y_test)
6. Ekstra: Eğitim ve Test Setlerinin Kullanımı
Eğitim ve test veri kümeleri genellikle aşağıdaki şekilde kullanılır:
- Eğitim Seti (
X_train
,y_train
): Modelin öğrenmesi için kullanılır. Bu veri kümesinde modelin parametreleri ayarlanır. - Test Seti (
X_test
,y_test
): Modelin genel performansını değerlendirmek için kullanılır. Model eğitim sırasında bu verilerle hiç karşılaşmamıştır, bu yüzden modelin genelleme yeteneğini ölçmek için kullanılır.
7. Kapsamlı Örnek
Aşağıda, train_test_split
fonksiyonunu içeren kapsamlı bir örnek bulunmaktadır:
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# Veri seti oluşturma
data = {
'feature1': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'feature2': [10, 9, 8, 7, 6, 5, 4, 3, 2, 1],
'label': [0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
}
df = pd.DataFrame(data)
X = df[['feature1', 'feature2']]
y = df['label']
# Veriyi eğitim ve test setlerine bölme
X_train, X_test, y_train, y_test = train_test_split(
X, y,
test_size=0.3,
random_state=42,
stratify=y
)
# Model oluşturma
model = LogisticRegression()
model.fit(X_train, y_train)
# Tahmin yapma
y_pred = model.predict(X_test)
# Sonuçları değerlendirme
accuracy = accuracy_score(y_test, y_pred)
print(f"Modelin doğruluk skoru: {accuracy}")
Bu örnekte, bir lojistik regresyon modeli eğitilmekte ve modelin test setindeki doğruluğu hesaplanmaktadır.
Bu temel bilgiler, Scikit-learn kullanarak test veri kümeleri oluşturmak ve bu kümeleri model değerlendirmesinde kullanmak için iyi bir başlangıç sağlar. Her adım, modelin performansını etkileyebilir, bu yüzden bu süreci dikkatle uygulamak önemlidir.
Bu Yazıya Tepkin Nedir?